Codeforces & Atcoder神仙题做题记录

鉴于Codeforces和atcoder上有很多神题,即使发呆了一整节数学课也是肝不出来,所以就记录一下。


AGC033B LRUD Game

这道题,我们发现$n\leq 2*10^5$只要横坐标或者纵坐标超出范围就可以,所以我们只用看其中一维就可以了。

我们又知道,如果先手想要让它从左边出去,那么先手就会一直Left,后手就会一直Right。

所以枚举四种情况(L,R,U,D)就可以了。


AGC033C Removing Coins

首先我们考虑链的情况,如果选的是端点,那么有一个点没有硬币,如果选的不是端点,那么有两个点没有硬币。所以就是一个取石子问题了。两个点的情况要特殊考虑。

但是树的情况过于复杂,所以我们要选一条链来代替这整棵树,使得这条链被删完当且仅当整棵树被删完。

这条链就是这棵树的直径。


ABC126F XOR Matching

被ABC狠狠地虐了一发 。。。

设$a \oplus b=k$且$a,b,k$互不相同,则构造$a,k,a,b,\ldots,k,\ldots,b$,其中$\ldots$为除了$a,b,k$之外的所有数。


ARC080F Prime Flip

首先看到翻转一段的肯定要差分,变成了对$x_i$和$x_{i+p}$都异或1,其中$p$为3以上的质数。于是不知道为什么就想到了先配对然后每次去掉两个点。现在我们要把$x_u$和$x_v$都异或上1,肯定就是通过“一条链”从$u$到$v$。打打表就会发现:

  • 若$|u-v|$为奇质数时,需要1步
  • 若$|u-v|$为偶数时,需要2步(哥德巴赫猜想)
  • 否则需要3步

那么就是进行配对,使得1最多,在1最多的情况下2最多。

1最多就是把奇数和偶数放在两边,差为质数的连一条边然后跑二分图。

2最多就是跑完之后把未配对的分别在一组内配对。配对完或者是剩下两个差不为奇质数的数,凑一个3.


ARC082E Convex Score

前方浪费好题现场。

注意到$2^{内部点个数}$是子集个数,所以我们对$(S,T)$计算贡献,其中$T$是$S$凸包的内部点的子集,所以$S\cup T$的凸包是$S$。所以它的贡献为$S\cup T$有凸包。

所以答案就是有凸包的子集个数。转换成没有凸包的子集个数就可以做了,时间复杂度$O(n^2\log n)$


AGC019B

记$B[l,r]$表示$A$翻转$[l,r]$后的字符串。

我们知道,如果$s[l]=s[r]$,那么翻转$[l,r]$和$[l+1,r-1]$是一样的,无贡献。如果$s[l]\neq s[r]$,且$B[l,r]= B[x,y]$,那么$B[l,r]$与$A$不相同的第一个位置就是$l$,最后一个不同的位置就是$r$,$B[x,y]$同理,所以$l=x,r=y$。

综上,答案为$1+s[x]\neq s[y]$的点对个数,反面考虑就可以直接$O(n)$计算了。


CF623B

发现只要确定gcd是多少就可以简单计算了。

发现第一个数和第$n$个数至少有一个会留下来,枚举是$+1,-1$还是不变。那么gcd肯定是这些的质因子。


CF901B

自闭了。。。

根据整数的欧几里得算法,取Fibonacci数列里面的数能到达复杂度上界。

那对于多项式,$p_0=1,p_1=x,p_n=xp_{n-1}\pm p_{n-2}$,那么$(p_n,p_{n-1})$就是答案。

那如何要求$p_n$的系数绝对值$\le 1$呢,取$p_n=xp_{n-1}+p_{n-2}(\mathrm{mod} \ 2)$.

感觉上是$\pm$之下$\mathrm{mod} \ 2$是不变的吧。。。但是不太会证。。。当时想到了但是不知道为什么是对的。。。

AGC039D

首先看一张图:

Codeforces & Atcoder神仙题做题记录_第1张图片

其中G为$\Delta ABC$的内心,证明:G为$\Delta DEF$的垂心。

证明:【略】(导角即可)

还有一个东西叫欧拉线,$\overrightarrow{OH}=\overrightarrow{OA}+\overrightarrow{OB}+\overrightarrow{OC}$。

枚举$D,E,F$计算贡献,由于是循环对称的,所以只用枚举$O(n^2)$个$D$。

你可能感兴趣的:(Codeforces & Atcoder神仙题做题记录)