|
2 | 2 |
|
3 | 3 | ???+ Abstract "题目大意"
|
4 | 4 |
|
5 |
| -给你一个字符串 $S$,删除其所有的 `.` |
| 5 | + 给你一个字符串 $S$,删除其所有的 `.` |
6 | 6 |
|
7 | 7 | ??? Success "参考代码"
|
8 | 8 |
|
|
32 | 32 |
|
33 | 33 | ???+ Abstract "题目大意"
|
34 | 34 |
|
35 |
| -给你一个正整数 $M(1 \le M \le 10 ^5)$,找到一个正整数 $N$ 和一组序列 $A = (A_1, A_2, \cdots, A_N)$ 满足下列所有条件: |
| 35 | + 给你一个正整数 $M(1 \le M \le 10 ^5)$,找到一个正整数 $N$ 和一组序列 $A = (A_1, A_2, \cdots, A_N)$ 满足下列所有条件: |
36 | 36 |
|
37 |
| -- $1 \le N \le 20$ |
38 |
| -- $0 \le A_i \le 10(1 \le i \le N)$ |
39 |
| -- $\sum\limits_{i = 1}^N3^{A_i} = M$ |
| 37 | + - $1 \le N \le 20$ |
| 38 | + - $0 \le A_i \le 10(1 \le i \le N)$ |
| 39 | + - $\sum\limits_{i = 1}^N3^{A_i} = M$ |
40 | 40 |
|
41 |
| -输出任意一组解即可。 |
| 41 | + 输出任意一组解即可。 |
42 | 42 |
|
43 | 43 | ??? Note "解题思路"
|
44 | 44 |
|
45 |
| -可以枚举,也可以从最低位开始消除。 |
| 45 | + 可以枚举,也可以从最低位开始消除。 |
46 | 46 |
|
47 | 47 | ??? Success "参考代码"
|
48 | 48 |
|
|
89 | 89 |
|
90 | 90 | ???+ Abstract "题目大意"
|
91 | 91 |
|
92 |
| -给你一个长度为 $N(3 \le N \le 2 \times 10^5)$ 字符串 $S$,同时给你 $Q(1 \le Q \le 2 \times 10^5)$ 个询问,每个询问包括一个整数 $X_i$ 和一个字符 $C_i$,你需要将 $S_{X_i}$ 替换成字符 $C_i$,然后回答出 $S$ 有多少个 `ABC` 子串。 |
| 92 | + 给你一个长度为 $N(3 \le N \le 2 \times 10^5)$ 字符串 $S$,同时给你 $Q(1 \le Q \le 2 \times 10^5)$ 个询问,每个询问包括一个整数 $X_i$ 和一个字符 $C_i$,你需要将 $S_{X_i}$ 替换成字符 $C_i$,然后回答出 $S$ 有多少个 `ABC` 子串。 |
93 | 93 |
|
94 | 94 | ??? Note "解题思路"
|
95 | 95 |
|
96 |
| -读入字符串 $S$ 马少处理出当前有多少个 `ABC` 子串,记为 `ans` |
| 96 | + 读入字符串 $S$ 马少处理出当前有多少个 `ABC` 子串,记为 `ans` |
97 | 97 |
|
98 |
| -替换前需要判断 `s.substr(x-2, 3)`,`s.substr(x-1, 3)`,`s.substr(x, 3)` 是不是 `ABC`,如果是则 `ans--`。 |
| 98 | + 替换前需要判断 `s.substr(x-2, 3)`,`s.substr(x-1, 3)`,`s.substr(x, 3)` 是不是 `ABC`,如果是则 `ans--`。 |
99 | 99 |
|
100 |
| -替换前需要判断 `s.substr(x-2, 3)`,`s.substr(x-1, 3)`,`s.substr(x, 3)` 是不是 `ABC`,如果是则 `ans++`。 |
| 100 | + 替换前需要判断 `s.substr(x-2, 3)`,`s.substr(x-1, 3)`,`s.substr(x, 3)` 是不是 `ABC`,如果是则 `ans++`。 |
101 | 101 |
|
102 | 102 | ??? Success "参考代码"
|
103 | 103 |
|
|
155 | 155 |
|
156 | 156 | ???+ Abstract "题目大意"
|
157 | 157 |
|
158 |
| -有 $N(1 \le N \le 2 \times 10^5)$ 个建筑,第 $i$ 个建筑的高度是 $H_i$,对于每一个 $i = 1, 2, \cdots, N$,找到满足下列条件的 $j(i < j \le N)$ 的个数: |
| 158 | + 有 $N(1 \le N \le 2 \times 10^5)$ 个建筑,第 $i$ 个建筑的高度是 $H_i$,对于每一个 $i = 1, 2, \cdots, N$,找到满足下列条件的 $j(i < j \le N)$ 的个数: |
159 | 159 |
|
160 |
| -- 在第 $i$ 个建筑和第 $j$ 个建筑中间不存在另一个建筑比第 $j$ 个建筑高。 |
| 160 | + - 在第 $i$ 个建筑和第 $j$ 个建筑中间不存在另一个建筑比第 $j$ 个建筑高。 |
161 | 161 |
|
162 | 162 | ??? Note "解题思路"
|
163 | 163 |
|
164 |
| -对于一组满足条件的 $(i, j)$,有 $\max\{H_{i+1}, H_{i+2}, \cdots, H_{j-1}\} \le H_j$。 |
| 164 | + 对于一组满足条件的 $(i, j)$,有 $\max\{H_{i+1}, H_{i+2}, \cdots, H_{j-1}\} \le H_j$。 |
165 | 165 |
|
166 |
| -如果固定 $i$,求出有多少个 $j$ 满足条件是困难的,但如果固定 $j$,只需要知道 $j$ 左边第一个比 $H_j$ 大的位置,设这个位置为 $t$,则 $j$ 可以给 $t$ 到 $j-1$ 的所有位置贡献 $1$。所以弄一个从左到右单调递增的单调栈,用差分数组维护每个 $j$ 的贡献即可。 |
| 166 | + 如果固定 $i$,求出有多少个 $j$ 满足条件是困难的,但如果固定 $j$,只需要知道 $j$ 左边第一个比 $H_j$ 大的位置,设这个位置为 $t$,则 $j$ 可以给 $t$ 到 $j-1$ 的所有位置贡献 $1$。所以弄一个从左到右单调递增的单调栈,用差分数组维护每个 $j$ 的贡献即可。 |
167 | 167 |
|
168 | 168 | ??? Success "参考代码"ze
|
169 | 169 |
|
|
210 | 210 |
|
211 | 211 | ???+ Abstract "题目大意"
|
212 | 212 |
|
213 |
| -给你一个 $N(1 \le N \le 2 \times 10^5)$ 个点的无向图,初始的时候没有任何边。给你 $Q(1 \le Q \le 2 \times 10^5)$ 个询问,询问有两种类型: |
| 213 | + 给你一个 $N(1 \le N \le 2 \times 10^5)$ 个点的无向图,初始的时候没有任何边。给你 $Q(1 \le Q \le 2 \times 10^5)$ 个询问,询问有两种类型: |
214 | 214 |
|
215 |
| -- 类型 1:`1 u v` ,表示在点 $u$ 和点 $v$ 之间添加一条无向边。 |
216 |
| -- 类型 2:`2 v k` ,表示询问和点 $v$ 连通的所有点中第 $k(1 \le k \le 10)$ 大的点编号。如果和点 $v$ 连通的点的数量小于 $k$ 个,输出 `-1`。注:节点自身与自身连通。 |
| 215 | + - 类型 1:`1 u v` ,表示在点 $u$ 和点 $v$ 之间添加一条无向边。 |
| 216 | + - 类型 2:`2 v k` ,表示询问和点 $v$ 连通的所有点中第 $k(1 \le k \le 10)$ 大的点编号。如果和点 $v$ 连通的点的数量小于 $k$ 个,输出 `-1`。注:节点自身与自身连通。 |
217 | 217 |
|
218 | 218 | ??? Note "解题思路"
|
219 | 219 |
|
220 |
| -连通分量可以用并查集维护,注意到 $k \le 10$,每个连通分量再附加维护一个有序的 `vector`,至多存储 $10$ 个节点的编号。合并的时候执行归并排序的流程,因此合并的时间复杂度 $O(k)$,查询复杂度 $O(1)$。 |
| 220 | + 连通分量可以用并查集维护,注意到 $k \le 10$,每个连通分量再附加维护一个有序的 `vector`,至多存储 $10$ 个节点的编号。合并的时候执行归并排序的流程,因此合并的时间复杂度 $O(k)$,查询复杂度 $O(1)$。 |
221 | 221 |
|
222 |
| -如果 $k$ 比较大的话,可以参照 [官方题解](https://atcoder.jp/contests/abc372/editorial/10990) 优化。 |
| 222 | + 如果 $k$ 比较大的话,可以参照 [官方题解](https://atcoder.jp/contests/abc372/editorial/10990) 优化。 |
223 | 223 |
|
224 | 224 | ??? Success "参考代码"
|
225 | 225 |
|
|
316 | 316 |
|
317 | 317 | ???+ Abstract "题目大意"
|
318 | 318 |
|
319 |
| -给你一个 $N(2 \le N \le 2 \times 10 ^ 5)$ 个点,$N+M$ 条边的有向图,图中有两类边: |
| 319 | + 给你一个 $N(2 \le N \le 2 \times 10 ^ 5)$ 个点,$N+M$ 条边的有向图,图中有两类边: |
320 | 320 |
|
321 |
| -- 第一类边:$1 \rightarrow 2, 2 \rightarrow 3, \cdots, N-1 \rightarrow N, N \rightarrow 1$,这种边一共有 $N$ 条。 |
322 |
| -- 第二类边:输入 $M$ 对整数 $(X_i, Y_i)$,表示存在一条 $X_i \rightarrow Y_i$ 的边。这种边一共有 $M(1 \le M \le 50)$ 条。 |
| 321 | + - 第一类边:$1 \rightarrow 2, 2 \rightarrow 3, \cdots, N-1 \rightarrow N, N \rightarrow 1$,这种边一共有 $N$ 条。 |
| 322 | + - 第二类边:输入 $M$ 对整数 $(X_i, Y_i)$,表示存在一条 $X_i \rightarrow Y_i$ 的边。这种边一共有 $M(1 \le M \le 50)$ 条。 |
323 | 323 |
|
324 |
| -问:从点 $1$ 出发,有多少条长度为 $K$ 的路径?答案对 $998244353$ 取模。 |
| 324 | + 问:从点 $1$ 出发,有多少条长度为 $K$ 的路径?答案对 $998244353$ 取模。 |
325 | 325 |
|
326 | 326 | ??? Note "解题思路"
|
327 | 327 |
|
328 |
| -考虑到 $M \le 50$,所以第二种类型的边是非常少的,图中大多数的点 $i$ 只有 $i \rightarrow i+1$ 一条边,一旦访问到对于这样类型的点,只能一路 $i \rightarrow i+1 \rightarrow i+2 \rightarrow \cdots$,所以考虑对图中的点进行缩点处理,把相邻的出度和入度为 $1$ 的点缩成一个,缩点的同时记录下每个点的集合大小。显然锁完点之后图中最多有 $4 \times M$ 个点,然后考虑 $dp$,定义 $dp[i][j]$ 表示走到点 $i$ 的长度为 $j$ 的路径数量,按照定义后向的传播即可。 |
| 328 | + 考虑到 $M \le 50$,所以第二种类型的边是非常少的,图中大多数的点 $i$ 只有 $i \rightarrow i+1$ 一条边,一旦访问到对于这样类型的点,只能一路 $i \rightarrow i+1 \rightarrow i+2 \rightarrow \cdots$,所以考虑对图中的点进行缩点处理,把相邻的出度和入度为 $1$ 的点缩成一个,缩点的同时记录下每个点的集合大小。显然锁完点之后图中最多有 $4 \times M$ 个点,然后考虑 $dp$,定义 $dp[i][j]$ 表示走到点 $i$ 的长度为 $j$ 的路径数量,按照定义后向的传播即可。 |
329 | 329 |
|
330 |
| -实现的时候要注意点 $1$ 不能被缩,其次就是注意最终结果停留在某条链的中间的情况。 |
| 330 | + 实现的时候要注意点 $1$ 不能被缩,其次就是特殊处理最终结果停留在某条链的中间的情况。 |
331 | 331 |
|
332 | 332 | ??? Success "参考代码"
|
333 | 333 |
|
|
0 commit comments