ARC 116
赛时通过 ( ext{A,B,C}),排名 (885),Performance (1529)。
A
找规律发现若:
- (xmod 4=1lor xmod 4=3):( ext{Odd});
- (xmod 4=2):( ext{Same});
- (xmod 4=0):( ext{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=egin{cases}sumlimits_j f_{(i-2j)div 2} & i mod 2=0\ 0 & i mod 2 =1end{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=maxlimits_{vin son_u}{f_v}+1),(g_u=minlimits_{vin son_u}{g_v}+1)。
然后分三种情况特判:
- 若 (f_u+g_ule x):说明用 (g_u) 代表的点即可覆盖子树内所有关键点,(f_ugets -inf);
- 若 (f_u=x):点 (u) 必须选,(f_u gets -inf,Ngets N+1)。
- 若 (g_u>xland d_u):点 (u) 是关键点,但子树中没有能覆盖它的。于是我们令 (f_ugets max(f_u,0)),表示把它丢给父亲处理。
对于根节点:如果 (f_{ ext{root}} eq -inf),那么 (Ngets N+1)。
为什么不用特判 (f_u>x) 的情况?因为这种情况不存在,(f_u) 最多会比 (max{f_v}) 大 (1),我们已经特判了 (f_u=x) 的情况,就不用再特判这个了。
CF #712 Div.2
赛时通过 ( ext{A,B,C}),排名 (1761)。
A
插入的字符 ( ext{a}) 要不然插入在开头,要不然插入在末尾。
B
略。
C
被这个 C 卡了好久,看来要好好练练构造啊。
一个合法的括号串,其中一定包含恰好一半的左括号。
所以,若 (s) 中有奇数个 (0),那么一定无法构造。
否则,我们计算出 (s) 中 (1) 的个数 (c_1)。对于前 (dfrac{c_1}{2}) 个 (1) 的位置我们填左括号,对于后 (dfrac{c_1}{2}) 个位置我们填右括号。
然后 (s) 中 (0) 的位置就瞎搞一下即可。
D
可以发现,如果一个元素旁边有三种不同的颜色,就挂了。
如果一个地方有两种相邻的不同颜色,而且该轮 ( ext{ban}) 掉的是剩下的那种颜色,这个地方也填不了。
考虑怎样避免这两种情况:
- 将网格黑白染色,染成棋盘状。记三种颜色是 (1,2,3),其中颜色 (1) 是黑色,颜色 (2) 是白色。
- 如果 ( ext{ban}) 掉 (1),就选没填的白色填一下。如果白色的位置都被填了,说明黑色的地方瞎填就行了,所以可以任选一个地方填 (3)。
- ( ext{ban}) 掉 (2) 以此类推。
- ( ext{ban}) 掉 (3) 瞎填即可。
E
https://www.luogu.com.cn/blog/alan-zhao/solution-cf1503c
ARC 119
赛时通过 ( ext{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}-dotspm A_{r}=0)。
于是我们可以把所有 (A_{2i}gets -A_{2i})。
这样问题就转化为问 (A) 中有多少个区间满足和为 (0)。
随便做做。