板刷 ARC,再不刷就退役了。
ARC185A mod M Game 2
猜结论题,两个人牌的总和是 \(n\times (n+1)\)。若 \(n\times (n+1)\bmod m=0\) 或 \(> n\) 先手获胜。
显然手牌还有大于 \(1\) 张的时候不可能失败。
和取模 \(m\) 为 \(0\) 那么后手一定最后一张失败;若取模 \(\le n\) 则后手一直拿着这张牌先手转化为上述情况。
剩下的情况所有牌都出完,先手胜。
ARC185B +1 and -1
假设已知目标序列 \(g\),将大限制转化为小限制,对于每个前缀都满足 \(\sum a\le \sum g\) 即可。
贪心地考虑 \(g\),显然是所有数尽量相同,前面一段数,后面是该数 \(+1\) 的一段数。
ARC185E Adjacent GCD
很明显地拆贡献。同时对于每个前缀算答案启示我们增量法求答案。
加入 \(i\) 的时候,对于每个 \(j\) 有 \(\gcd(a_i,a_j)\times 2^{j-1}\) 的贡献,现在考虑 \(\gcd\) 的性质。
考虑把 \(j\) 的贡献全部存进其约数的桶里,查询的时候,\(\gcd = d\) 的贡献减去所有 \(d\) 的倍数贡献即可。
然而这么做复杂度需要调和级数,无法通过。考虑对于每个 \(d\),改变一下其贡献的系数。
我们原本求的是 \(\sum d\times f_d\),其中 \(f_d=g_d-\sum_{d|y}f_y\),\(g_d\) 表示桶里存的贡献。
考虑令 \(d\) 的系数容斥一下,因为 \(d\) 会被其因数都算一遍,所以从小到大每个减去其因数的贡献即可。
则 \(c_d=d-\sum_{y|d}c_y\),而这几把玩意其实就是 \(\varphi(d)\),因为 \(d=\sum_{y|d}\varphi(y)\),这大抵就是欧拉反演把。
ARC184A Appraiser
很几把唐氏这个题,考虑每 \(11\) 个分一组,每个组只需要比较 \(10\) 次。
每个组至少有一个真币;并且一定存在全部都是真币的组,这个可以求出来。
那么我们已知一枚真币的情况下再去对未确定的组判断即可。
ARC184B 123 Set
注意到,所有数可以按照去掉 \(2,3\) 的因数后分组。每组都是独立的。即每个数写成 \(k2^i3^j\)。
对于每组都是一个有向图,分为若干层,每层的每个点向下一层的该位置和下一个位置连边。
相当于覆盖所有点,这玩意儿可以状压 dp,只需要支持超集 \(\min\) 即可。
然后注意到有若干组的图都是相同的,这个用一下整除分块套外面即可。
ARC184D Erase Balls 2D
考虑最后点的形式,显然为若干个矩形从左上角到右下角连起来。
所以直接做一个 dp 即可。但是有一个问题就是会算重。
我们需要钦定一个矩形里面的点不能被两个首尾相连的矩形全部包括即可。
也就是相当于构造双射,使得每种点的集合映出出来的矩形集合是唯一的。
ARC183B Near Assignment
盲猜需要分讨 \(k\) 是否大于 \(1\);\(k=1\) 的情况只需判断 \(b\) 每个连续段的元素构成的序列是否是 \(A\) 子序列。
\(k>1\) 的,考虑 \(1,3,2,1\) 为何不能变为 \(1,2,3,1\),当 \(k=2\) 的时候。
我们需要保证 \(A\) 每次操作后都包含 \(B\) 的所有元素,所以相当于只有一个空位。
而最后两个 \(1\) 的距离 \(>k\),导致我们最后一定会使某个元素消失,所以就不合法。
所以充要条件是若存在 \(b_i=b_j\),且 \(|i-j|\le k,i\neq j\) 的话就合法。
ARC183C Not Argmax
简单区间 dp,每次取出最大值之后划分子任务。
ARC183D Keep Perfectly Matched
最大化 \(\sum dep_u-\sum dep_{lca({u,v})}\),我们要定一个根。
贪心地,取重心为根,既使得 \(\sum dep_u\) 最大化,且明显 \(lca(u,v)\) 都可以取到根节点。
钦定匹配边为 \(1\),非匹配边为 \(0\),不难发现,每次选一个路径出来,必须选 01 交替的,并使 01 反转。
对于根的每个儿子是独立的,只需要 dfs 一遍即可求出第几次删第几个点。
考虑到一个点只有一个匹配边出边,所以堆维护所有非匹配边儿子,每次贪心地取出大小最大的子树。