ABC 比赛记录
主播荔枝打比赛不用 ai
R441
ABCDEF
1610 perf
rnk 1033
D
有意思。赛时不会。
考虑题目中给的出度 \(\le 4\)。以及 \(L \le 10\)。直接暴力即可。总的时间复杂度 \(O(4^{10})\)。轻松通过。
E
手刃了。树状数组板子。
考虑怎么做到线性?
原来的做法不太能做。考虑递推。由第 \(i - 1\) 位的答案递推第 \(i\) 位的答案。考虑 \(S_i\):
- \(S_i = 1\)。此时对于前面满足条件的区间我们都满足。同时前面 \(0,1\) 相等的区间也满足。
- \(S_i = 0\)。此时前面 \(1\) 比 \(0\) 多 \(1\) 的区间不满足。其余前面满足的区间都满足,扣掉就好了。
那么就是线性的。
F
好题啊。
只要对于每个物品,求出选它 / 不选它能达到的最大价值。
这个可以分别做前缀 / 后缀背包。
R443
ABCDEF
2141 perf
rnk 191
D
神秘贪心结论题。
对于每个棋子,尽量地不去动它能使操作数最小。
记 \(a_i\) 为棋子 \(i\) 的初始位置,\(b_i\) 为最终位置。只需最大化 \(\sum b_i\)。
考虑一下约束。需要使得 \(b_i \le a_i\),$b_i \le b_{i+1} + 1 $ 且 \(b_{i+1} \le b_i + 1\)。
于是 \(b_i = \min(a_i,b_{i-1}+1,b_{i+1}+1)\)。左到右跑使得 \(b_i \le b_{i-1} + 1\),右到左跑维护后者即可。
线性。
E
简单题。每个点按题意暴力地扩展。判断某个墙是否能被爆破只需维护那一列的所有墙。如果在尾端就能并弹出即可。
\(O(n^2)\)。
F
板子。bfs 队列里放余数和最后的数字。扩展是简单的。注意记忆化一下。那就是 \(O(10n)\) 的。
可以证明只要不是 \(10\) 的倍数总是有解的。
R444
ABCDE
1413 perf
rnk 1770 鉴定为被 CEF 创飞导致的。
D
差分一下然后处理一下进位就好了。
E
妙妙题。一开始看错题想了挺久的。
注意到对于每个左端点 \(l\),与它满足条件的右端点 \(r\) 总是一段的。也就是说,找到最后一个满足条件的 \(r\),有 \([l, r], [l, l + 1], \cdots, [l, r]\) 均满足条件。
于是可以双指针,每次加入一个数时用 set 判一下是否满足条件即可。\(O(n \log n)\)。
F
不会。
R461
ABCDE
1616 perf
rnk 1157
二十多场没打 /dk
D
无敌了,还以为是什么神秘单调性题目,结果 \(O(n^3\log n)\) 直接过了。无敌了。
具体就是枚举左下角的点,再确定左上方点的 \(y\) 值,这样二分 \(x\) 即可。二分得到一段 \(x\),使得和为 \(K\)。简单计数。
双指针也是容易的。只需要维护 \(\le K\) 和 \(\ge K\) 的位置,这个容易单调维护。于是做到 \(O(n^3)\)。
E
ds 题。做了很久才过,大失败。
考虑操作 \(1\),横着涂一行黑的会改变什么。如果是第一次涂这一行,贡献显然就是 \(n\)。但是如果不是呢?不妨记上一次涂这一行的时刻为 \(j\),当前时刻为 \(i\)。那么时刻 \(j \sim i\) 中有多少列被涂白了,这一次操作就会把它们变成黑的。贡献就是这个列数。
那么问题转化为求时刻 \(j \sim i\) 中,有多少列被涂白了,注意要去重。操作 \(2\) 的贡献也是同理的。\(j\) 是很好维护的,维护第 \(p\) 行,第 \(q\) 列上一次涂的时间 \(r_{p},c_{q}\) 即可。那么可以把询问序列离线下来然后扫描线用树状数组算。
F
这个题,有点牛福的。
查表得知 \(n\) 的因子个数最大值为 \(2304\),记 \(D = 2304\)。考虑 dp。
按因子从小到大选,然后因为不同顺序的序列要算多次,最后还要乘上选的数个数的阶乘。记 \(f_{i,j,k}\) 表示前 \(i\) 个因子,选了 \(j\) 个,得到的积为 \(k\) 的答案,\(g_{i,j,k}\) 表示方案数。这里的 \(k\) 是一个映射。考虑怎么转移:
判断第 \(i\) 个因子 \(d_i\) 是否满足 \(d_i \mid k\):
- 不是。此时不能选,\(f_{i,j,k} = f_{i-1,j,k}\),\(g_{i,j,k} = g_{i-1,j,k}\)。
- 是。考虑选不选,\(f_{i,j,k} = f_{i-1,j,k} + f_{i-1,j-1,\frac{k}{d_i}} + d_i \times g_{i-1,j-1,\frac{k}{d_i}}\),\(g_{i,j,k} = g_{i-1,j,k} + g_{i-1,j-1,\frac{k}{d_i}}\)。
那么做完了。由于 \(i\),\(k\) 是 \(D\) 的量级,\(j\) 是 \(\log n\) 的量级,时间复杂度就是 \(O(D^2\log n)\)。
浙公网安备 33010602011771号