愣是把周作业做成了英语阅读理解题。
A. CF1804C
简单题。
注意到枚举至 \(2n\) 后都是循环节,而暴力扫 \([1,2n]\) acceptable。
B. CF1798D
简单题。
老套路了,区间和先前缀和转折线统计图,变成极差。
然后把最低点循环移位到开头,变成整个折线在 \([0,lim]\) 之间,最后落回 \(y=0\),其中 \(lim = \max - \min\)。
数组排序,贪心双指针往中间即可。
C. CF1810D
简单题。
不难一眼看出,给定的 \(a, b, n\) 相当于限制树高在一个区间。
不断按照新获取的信息更改区间即可,对于询问看左右端点是否答案相同。
D. CF1805D
简单题。
推一下就不难发现和最远点距有关。
对这个东西排序就做完了。
E&F. CF2154C No Cost Too Great
简单题但是需要一点注意力。
给定 \(n\) 个正整数 \(a_i\) 和 \(n\) 个正整数 \(b_i\),你可以进行任意次操作,使得 \(a\) 中存在两个下标不同的元素 \(\gcd \not= 1\)。
- 操作:选择一个位置令 \(a_i \leftarrow a_i + 1\),花费代价 \(b_i\)。
在 Easy Version 中 \(\forall b_i = 1\)。
Easy Version 是简单的,显然答案 \(\leq 2\)。
对于 \(ans = 0\) 的情况直接筛质数。
对于 \(ans = 1\) 的情况看某个数 \(+1\) 之后是否能凑出一个其它数中存在的质数。
剩余是 \(ans = 2\)。
考虑继承这些基本想法,拓展到 Hard Version。
\(ans = 0\) 是一样的。
\(ans = 2\) 的情况类比过来就是 \(b\) 数组最小值加次小值。
由此推导出:如果 \(b\) 不是最小值,则至多操作一次。
而最小值一定通过若干次操作让它变成某一个质数的倍数,直接枚举质数去做就行了。
质数最多只有 \(O(\sum n \log n)\) 个,所以复杂度是对的。
G. CF1804D
简单题。
每行是独立的。
最小值是好做的,贪心把极长的连续 \(1\) 给 \(1 \times 2\) 的 bedroom,剩下给 \(1 \times 1\)。注意要和 \(\frac{m}{2}\) 取 \(\min\)。
最大值也是不难的,肯定是贪心把 \(0,0\) 或 \(0,1\) 或 \(1,0\) 给 \(1 \times 2\) 的 bedroom,这些对答案不会有减的贡献,且显然不能增。
考虑设 \(f_i\) 表示前 \(i\) 个位置最多放几个上面的数对,转移是很简单的。
然后再和 \(\frac{m}{4}\) 比较,如果更小则一定有 \(1,1\) 被 \(1 \times 2\) 的 bedroom 消耗,数量是可以算出来的。
H. CF1810E
注意力题。
第一眼 bfs 不是做完了,然后发现漏读了“只能选一个起点”。
这东西很像“瓶颈”,所以考虑点权多叉重构树,大根。
然后在一个节点在拓展到父亲之前一定可以遍历完它子树所有点,因此它能拓展仅当 \(sz_u \geq a_{fa_u}\)。
找是否有 \(a_u=0\) 到根的极长合法链即可,一次 dfs 就做完了。
I. ARC112D
注意力题。
每个点都能访问所有节点等价于 \((1,1)\) 能访问所有节点。
考虑一个 # 相当于连接了这一行和这一列使得它们互相可达。
所以直接对行列建 \(n+m\) 个点做 Union Find 即可。
J. CF1798E
注意力题。
不难特判 \(ans=0\),但是我们来仔细考虑一下是怎么判的。
设 \(f_i\) 表示 \([i,n]\) 会分成几段,如果不能分成完整的段则视为 \(-\infty\),显然 \(f_i = f_{i+a_i+1}+1\)。
然后不难发现 \(ans \leq 2\),具体地对于 \([i,n]\) 的答案,修改 \(a_i=1,a_{i+1}=n-i\)。
所以考虑 \(ans=1\) 要怎么做,分为两种:
- 修改 \(a_i\),只需要满足 \(f_{i+1}\) 不为 \(-\infty\)。
- 修改后面,但是只能修改一次,不妨设 \(g_{i}\) 表示 \([i,n]\) 在至多使用一次修改的情况下能形成的最多段数是多少,只需要满足 \(g_{i+1} \geq a_i\) 即可。
- 具体地,只要 \([i+1,n]\) 能形成 \(t\) 段,那么就一定能通过一次修改形成 \([1,t)\) 段,这是显然的。
K. CF1806D
脑电波题,只能说出题人表达能力有待提高。
看不懂题面,所以跑去背板了。
