ARC 116/119 与 CF Round 712 Div.2 比赛记录
ARC 116
赛时通过 \(\text{A,B,C}\),排名 \(885\),Performance \(1529\)。
A
找规律发现若:
- \(x\bmod 4=1\lor x\bmod 4=3\):\(\text{Odd}\);
- \(x\bmod 4=2\):\(\text{Same}\);
- \(x\bmod 4=0\):\(\text{Even}\)。
B
将 \(A\) 排序,并整理成 \((a_i,b_i)\) 的形式,其中 \(b_i\) 表示 \(a_i\) 的出现次数。
枚举子集 \(B\) 的 \(\max\),推一下式子即可。
C
可以发现,若约数链中不允许有相同的数,那么其长度最多为 \(\log_2m\) 。
设 \(f_{i,j}\) 为长度为 \(i\) 的约数链,最后一个数为 \(j\) 且不允许有相同数字的方案数。
这个可以 \(O(m \log^2 m)\) 计算。
枚举 \(i,j\),然后考虑在约数链之间填上相同的数有多少种填法即可,这个可以用隔板法计算。
D
考虑那个 \(\operatorname{xor}\) 和为 \(0\) 的条件,其实是规定了每一位上都要有偶数个 \(1\)。
拆位计算,那么当我们确定了从低到高的第 \(i\) 位时,其实可以将它归约到一个相同的子问题:计算最高的 \((i+1)\) 位。
设 \(f_i\) 为 \(n\) 个和为 \(i\) 的数,且 \(\operatorname{xor}\) 和为 \(0\) 的方案数。
那么 \(f_i=\begin{cases}\sum\limits_j f_{(i-2j)\div 2} & i \bmod 2=0\\ 0 & i \bmod 2 =1\end{cases}\)
E
重题:P3523 [POI2011]DYN-Dynamite。
因为 POI 这题好像还难点,我就做这道题了。
阳间翻译可以看 https://loj.ac/p/2165。
看到这种“最大值最小”之类的先想到二分。二分答案 \(x\),于是问题变成了“能否选 \(m\) 个点,使得关键点到这些点距离的最小值的最大值 \(\le x\)”。
考虑树形 dp,设 \(f_u\) 为以 \(u\) 为根的子树内,距离 \(u\) 最远的、未被覆盖的关键点,到 \(u\) 的距离,\(g_u\) 为以 \(u\) 为根的子树内,距离 \(u\) 最近的、被选中的点,到 \(u\) 的距离;变量 \(N\) 表示当前关键点个数。
一开始 \(f_u=\max\limits_{v\in son_u}\{f_v\}+1\),\(g_u=\min\limits_{v\in son_u}\{g_v\}+1\)。
然后分三种情况特判:
- 若 \(f_u+g_u\le x\):说明用 \(g_u\) 代表的点即可覆盖子树内所有关键点,\(f_u\gets -\inf\);
- 若 \(f_u=x\):点 \(u\) 必须选,\(f_u \gets -\inf,N\gets N+1\)。
- 若 \(g_u>x\land d_u\):点 \(u\) 是关键点,但子树中没有能覆盖它的。于是我们令 \(f_u\gets \max(f_u,0)\),表示把它丢给父亲处理。
对于根节点:如果 \(f_{\text{root}}\neq -\inf\),那么 \(N\gets N+1\)。
为什么不用特判 \(f_u>x\) 的情况?因为这种情况不存在,\(f_u\) 最多会比 \(\max\{f_v\}\) 大 \(1\),我们已经特判了 \(f_u=x\) 的情况,就不用再特判这个了。
CF #712 Div.2
赛时通过 \(\text{A,B,C}\),排名 \(1761\)。
A
插入的字符 \(\text{a}\) 要不然插入在开头,要不然插入在末尾。
B
略。
C
被这个 C 卡了好久,看来要好好练练构造啊。
一个合法的括号串,其中一定包含恰好一半的左括号。
所以,若 \(s\) 中有奇数个 \(0\),那么一定无法构造。
否则,我们计算出 \(s\) 中 \(1\) 的个数 \(c_1\)。对于前 \(\dfrac{c_1}{2}\) 个 \(1\) 的位置我们填左括号,对于后 \(\dfrac{c_1}{2}\) 个位置我们填右括号。
然后 \(s\) 中 \(0\) 的位置就瞎搞一下即可。
D
可以发现,如果一个元素旁边有三种不同的颜色,就挂了。
如果一个地方有两种相邻的不同颜色,而且该轮 \(\text{ban}\) 掉的是剩下的那种颜色,这个地方也填不了。
考虑怎样避免这两种情况:
- 将网格黑白染色,染成棋盘状。记三种颜色是 \(1,2,3\),其中颜色 \(1\) 是黑色,颜色 \(2\) 是白色。
- 如果 \(\text{ban}\) 掉 \(1\),就选没填的白色填一下。如果白色的位置都被填了,说明黑色的地方瞎填就行了,所以可以任选一个地方填 \(3\)。
- \(\text{ban}\) 掉 \(2\) 以此类推。
- \(\text{ban}\) 掉 \(3\) 瞎填即可。
E
https://www.luogu.com.cn/blog/alan-zhao/solution-cf1503c
ARC 119
赛时通过 \(\text{A,B,C}\),排名 \(616\),Performance \(1639\)。
A
枚举 \(b\),计算相应的 \(a,c\) 再取最优解即可。
B
首先题目中描述的操作可以看作每个 \(0\) 都可以在它所在的极长 \(1\) 连续段中移动。
有一个关键性质:\(S\) 中的第 \(i\) 个 \(0\),与 \(T\) 中的第 \(i\) 个 \(0\) 相对应。这是因为 \(S\) 中的两个零如果在交换过程中相互跨越了,那么一定不比不跨越优。
于是 \(S\) 中的每个 \(0\) 都可以通过至多 \(1\) 次交换达到目标。找到那些不需要操作的 \(0\) 即可。
C
可以发现若区间 \([l,r]\) 是合法的,那么一定有 \(A_l-A_{l+1}+A_{l+2}-\dots\pm A_{r}=0\)。
于是我们可以把所有 \(A_{2i}\gets -A_{2i}\)。
这样问题就转化为问 \(A\) 中有多少个区间满足和为 \(0\)。
随便做做。