update problems
This commit is contained in:
parent
56b0d3ba15
commit
80846a1f69
14
.vscode/launch.json
vendored
14
.vscode/launch.json
vendored
@ -4,6 +4,20 @@
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "gdb",
|
||||
"request": "launch",
|
||||
"name": "GDB",
|
||||
"program": "${workspaceFolder}/${command:AskForProgramName}",
|
||||
"stopOnEntry": true
|
||||
},
|
||||
{
|
||||
"type": "by-gdb",
|
||||
"request": "launch",
|
||||
"name": "Launch(gdb)",
|
||||
"program": "${fileBasenameNoExtension}",
|
||||
"cwd": "${workspaceRoot}"
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
|
72
day4/T435167/T435167.md
Normal file
72
day4/T435167/T435167.md
Normal file
@ -0,0 +1,72 @@
|
||||
# 01 Sort
|
||||
|
||||
## 题目描述
|
||||
|
||||
给定两个长度为 $n$ 的序列 $a[1...n]$ 和 $b[1...n]$,其中每个 $a[i]$ 都对应一个属性 $b[i]$,并且 $b[i]$ 的取值只能为 $0$ 或者 $1$。
|
||||
|
||||
定义一次操作的规则如下:
|
||||
|
||||
- 选择满足 $b[i]\neq b[j]$ 的两个数 $i$ 和 $j \ (1\le i,j\le n, i\neq j)$,分别交换对应的 $a[i],a[j]$ 和 $b[i], b[j]$
|
||||
|
||||
你最多可以执行 $x\in [0, 10^5]$ 次操作,请你判断能否在规定次数内,使得序列 $a[1...n]$ 排序成非降顺序吗?如果可以,请你输出一种可能的操作方案;如果不可以,则输出 $-1$。
|
||||
|
||||
## 输入格式
|
||||
|
||||
第一行包含一个整数 $t$,代表 $t$ 组数据
|
||||
|
||||
每组数据的第一行保包含 $1$ 个整数 $n$,表示序列长度
|
||||
|
||||
每组数据的第二行 $n$ 个整数 $a[1...n]$
|
||||
|
||||
每组数据的第三行 $n$ 个整数 $b[1...n]$,表示每个 $a[i]$ 对应的属性 $0$ 或 $1$
|
||||
|
||||
## 输出格式
|
||||
|
||||
请你分别输出 $t$ 组数据的答案。
|
||||
|
||||
对于每组数据,第一行输出一个整数 $x \ (x\in [0, 10^5])$ 代表操作次数,若无解则输出 $-1$。接下来的 $x$ 行,每行两个整数 $i$ 和 $j$,代表一次操作。
|
||||
|
||||
如果有多个答案,则打印其中任何一个。你不必尽量减少移动的次数。
|
||||
|
||||
## 样例 #1
|
||||
|
||||
### 样例输入 #1
|
||||
|
||||
```
|
||||
5
|
||||
4
|
||||
10 20 20 30
|
||||
0 1 0 1
|
||||
3
|
||||
3 1 2
|
||||
0 1 1
|
||||
4
|
||||
2 2 4 8
|
||||
1 1 1 1
|
||||
3
|
||||
5 15 4
|
||||
0 0 0
|
||||
4
|
||||
20 10 100 50
|
||||
1 0 0 1
|
||||
```
|
||||
|
||||
### 样例输出 #1
|
||||
|
||||
```
|
||||
0
|
||||
2
|
||||
1 2
|
||||
2 3
|
||||
0
|
||||
-1
|
||||
2
|
||||
1 2
|
||||
3 4
|
||||
```
|
||||
|
||||
## 提示
|
||||
|
||||
对于 $20\%$ 数据,$1\le t\le 10$,$1\le n\le 100$,$1\le a[i]\le 100$,所有 $b[i]=0$
|
||||
|
||||
对于 $100\%$ 数据,$1\le t\le 100$,$1\le n\le 10^3$,$1\le a[i]\le 10^5$,$b[i]\in \{0,1\}$
|
77
day4/U287193/U287193.md
Normal file
77
day4/U287193/U287193.md
Normal file
@ -0,0 +1,77 @@
|
||||
# 冒泡
|
||||
|
||||
## 题目描述
|
||||
|
||||
对于一个 $1\sim n$ 的排列 $a$ 和一个数 $m$,定义 $f(a,m)$ 为恰好经过 $m$ 轮冒泡排序后变为 $a$ 的不同排列数量。
|
||||
|
||||
一轮冒泡排序的过程如下:从小到大依次考虑每个 $i \in [1,n)$,如果 $a[i]>a[i+1]$,那么就交换 $a[i]$ 和 $a[i+1]$。
|
||||
|
||||
给定 $n,m$ 和一个长度为 $n$ 的序列 $lim$。一个排列 $a$ 合法当且仅当 $\forall i$,如果 $lim[i]\ne 0$,那么 $a[i] = lim[i]$。
|
||||
|
||||
你需要求出所有合法的 $a$ 的 $f(a,m)$ 之和。答案对 $998244353$ 取模。
|
||||
|
||||
## 输入格式
|
||||
|
||||
第一行,共两个数,表示 $n,m$。
|
||||
|
||||
第二行,共 $n$ 个数,表示 $lim[1...n]$。
|
||||
|
||||
## 输出格式
|
||||
|
||||
共一行,一个数,表示答案。
|
||||
|
||||
## 样例 #1
|
||||
|
||||
### 样例输入 #1
|
||||
|
||||
```
|
||||
6 2
|
||||
0 0 0 0 0 0
|
||||
```
|
||||
|
||||
### 样例输出 #1
|
||||
|
||||
```
|
||||
720
|
||||
```
|
||||
|
||||
## 样例 #2
|
||||
|
||||
### 样例输入 #2
|
||||
|
||||
```
|
||||
6 0
|
||||
6 0 1 4 0 0
|
||||
```
|
||||
|
||||
### 样例输出 #2
|
||||
|
||||
```
|
||||
6
|
||||
```
|
||||
|
||||
## 样例 #3
|
||||
|
||||
### 样例输入 #3
|
||||
|
||||
```
|
||||
见下发样例
|
||||
```
|
||||
|
||||
### 样例输出 #3
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
## 提示
|
||||
|
||||
对于 100% 的数据,$1\le n\le 5000, 0\le m\le n, 0\le lim[i]\le n$,保证 $lim[i]$ 互不相同。
|
||||
|
||||
子任务1(10pts):$n\le 8$
|
||||
|
||||
子任务2(40pts):所有 $lim[i]\ne 0$
|
||||
|
||||
子任务3(20pts):$n\le 100$
|
||||
|
||||
子任务4(30pts):无特殊限制
|
88
day4/U461920/U461920.md
Normal file
88
day4/U461920/U461920.md
Normal file
@ -0,0 +1,88 @@
|
||||
# 中位数
|
||||
|
||||
## 题目背景
|
||||
|
||||
1.5s, 512MB
|
||||
|
||||
定义一个序列 $A[0,1,...,N-1]$ 的中位数为将 $A$ 升序排序之后的中间元素 $A'[N/2]$;如果 $N$ 为偶数,则序列可以有 $2$ 个中位数。
|
||||
|
||||
定义 $f(A)$ 为序列 $A$ 的中位数在序列中的出现次数,如果序列有 $2$ 个不同中位数,则为它们出现次数的**较大值**。
|
||||
|
||||
## 题目描述
|
||||
|
||||
现在给定序列 $A[0,1,...,N-1]$,请你计算其所有子段 $f$ 值的最大值:
|
||||
$$
|
||||
max_{0\le l \le r< N}\{ f(A[l...r])\}
|
||||
$$
|
||||
|
||||
## 输入格式
|
||||
|
||||
第 $1$ 行: $N$
|
||||
|
||||
第 $2$ 行: $A[0] A[1] \cdots A[N-1]$
|
||||
|
||||
## 输出格式
|
||||
|
||||
输出1行1个整数代表答案
|
||||
|
||||
## 样例 #1
|
||||
|
||||
### 样例输入 #1
|
||||
|
||||
```
|
||||
7
|
||||
1 2 3 1 2 1 3
|
||||
```
|
||||
|
||||
### 样例输出 #1
|
||||
|
||||
```
|
||||
3
|
||||
```
|
||||
|
||||
## 样例 #2
|
||||
|
||||
### 样例输入 #2
|
||||
|
||||
```
|
||||
9
|
||||
1 1 2 3 4 3 2 1 1
|
||||
```
|
||||
|
||||
### 样例输出 #2
|
||||
|
||||
```
|
||||
2
|
||||
```
|
||||
|
||||
## 样例 #3
|
||||
|
||||
### 样例输入 #3
|
||||
|
||||
```
|
||||
14
|
||||
2 6 2 5 3 4 2 1 4 3 5 6 3 2
|
||||
```
|
||||
|
||||
### 样例输出 #3
|
||||
|
||||
```
|
||||
3
|
||||
```
|
||||
|
||||
## 提示
|
||||
|
||||
### 约束条件
|
||||
|
||||
- $1 \leq N \leq 5 \times 10^{5}$
|
||||
- $1 \leq A[i] \leq N$
|
||||
|
||||
### 子任务
|
||||
|
||||
1. (11 分):$N \leq 100$ 。
|
||||
2. (17 分):$N \le 2 \times 10^{3}$ 。
|
||||
3. (7 分):存在一个 $x$ 满足 $\forall 0 \leq i<x, A[i] \leq A[i+1]$ 且 $\forall x<i<N, A[i] \leq A[i-1]$ 。
|
||||
4. (12 分):$A[i] \leq 3$ 。
|
||||
5. (13 分):序列中所有数出现最多不超过 $2$ 次。
|
||||
6. (22 分):$N \leq 8 \times 10^{4}$ 。
|
||||
7. (18 分):没有额外限制。
|
0
day4/U76034/U76034.cpp
Normal file
0
day4/U76034/U76034.cpp
Normal file
79
day4/U76034/U76034.md
Normal file
79
day4/U76034/U76034.md
Normal file
@ -0,0 +1,79 @@
|
||||
# 拆分数列计数
|
||||
|
||||
## 题目描述
|
||||
|
||||
对于正整数 $x$ ,若长度为 $n$ 的整数序列 $a[1,2,...,n]$ 满足:
|
||||
$$
|
||||
\prod_{i=1}^n a[i] = x
|
||||
$$
|
||||
|
||||
则称序列 $a$ 是 $x$ 的一个 $n$ 拆分序列,注意 $a[i]$ 可以为负。
|
||||
|
||||
现给定 $x,n$,求 $x$ 的不同 $n$ 拆分序列数量(对 `1e9 + 7` 取模)。
|
||||
|
||||
|
||||
- 2个拆分序列 $a,b$ 不同,当且仅当存在下标 $i\in [1,n]$ 满足 $a[i]\ne b[i]$。
|
||||
|
||||
## 输入格式
|
||||
|
||||
第一行1个整数 $q$,代表有 $q$ 组询问
|
||||
|
||||
接下来 $q$ 行,每行2个整数 $x,n$,代表一组询问
|
||||
|
||||
## 输出格式
|
||||
|
||||
$q$ 行,每行1个整数代表答案 (对 `1e9 + 7` 取模)
|
||||
|
||||
## 样例 #1
|
||||
|
||||
### 样例输入 #1
|
||||
|
||||
```
|
||||
3
|
||||
6 3
|
||||
4 2
|
||||
1244 1241
|
||||
```
|
||||
|
||||
### 样例输出 #1
|
||||
|
||||
```
|
||||
36
|
||||
6
|
||||
303870674
|
||||
```
|
||||
|
||||
## 样例 #2
|
||||
|
||||
### 样例输入 #2
|
||||
|
||||
```
|
||||
2
|
||||
12414 211234
|
||||
12314 12141352435
|
||||
```
|
||||
|
||||
### 样例输出 #2
|
||||
|
||||
```
|
||||
690493918
|
||||
924519003
|
||||
```
|
||||
|
||||
## 提示
|
||||
|
||||
【样例解释】
|
||||
|
||||
$x=4,n=2$ 时,共有6种拆分序列 $[-4,-1],[-2,-2],[2,2],[4,1],[-1,-4],[1,4]$
|
||||
|
||||
【数据范围】
|
||||
|
||||
对于20%的数据,$q=1,x,n\le 10$
|
||||
|
||||
对于40%的数据,$q\le 100,x,n\le 100$
|
||||
|
||||
对于另20%的数据,$q=1,n\le 10^6$
|
||||
|
||||
对于80%的数据,$n\le 10^6$
|
||||
|
||||
对于100%的数据,$1\le q\le 10^5,1\le x\le 10^6, 1\le n\le 10^{16}$
|
BIN
day4/U76034/U76034.pdf
Normal file
BIN
day4/U76034/U76034.pdf
Normal file
Binary file not shown.
17
day4/U76034/chat.md
Normal file
17
day4/U76034/chat.md
Normal file
@ -0,0 +1,17 @@
|
||||
符号 \(\prod_{i=1}^n a[i] = x\) 代表一个从 \(i = 1\) 到 \(i = n\) 的累积乘积操作,最终结果等于 \(x\)。
|
||||
|
||||
具体来说,这个表达式可以分解为以下步骤:
|
||||
|
||||
1. **累积乘积**:\(\prod_{i=1}^n a[i]\) 表示将 \(a[1], a[2], \ldots, a[n]\) 这 \(n\) 个元素依次相乘。
|
||||
2. **等于 \(x\)**:将上述所有元素的乘积结果设为 \(x\)。
|
||||
|
||||
例如,假设 \(a = [a[1], a[2], a[3]]\) 且 \(n = 3\),那么:
|
||||
\[
|
||||
\prod_{i=1}^n a[i] = a[1] \times a[2] \times a[3]
|
||||
\]
|
||||
如果这个乘积等于某个值 \(x\),我们就有:
|
||||
\[
|
||||
a[1] \times a[2] \times a[3] = x
|
||||
\]
|
||||
|
||||
因此,\(\prod_{i=1}^n a[i] = x\) 表示数组 \(a\) 中从第 1 个到第 \(n\) 个元素的乘积等于 \(x\)。
|
Loading…
Reference in New Issue
Block a user