退役后做题记录

退役后做题记录

我退役了


AGC030E Less than 3

神仙题Orz

首先,如果你修改了一个位置\(i\),那么\(i-1\),\(i+1\)一定不同,否则一定会出现连续三个一样的

将0和1之间插入一条红线,1和0之间插入一条蓝线。那么红蓝线一定交替出现

修改相当于移动一条线,移动方案相当于一个匹配(位置1以前、位置n以后可以看做有无数条红蓝交替的线)

最妙的是,“不能出现连续三个一样的”限制没有了(因为一定能找到方案)

枚举匹配的方案即可

https://atcoder.jp/contests/agc030/submissions/6933519


AGC029B Garbage Collector

首先,取垃圾的代价固定,为\(nX\),可以无视。

设取了\(K\)次垃圾,放垃圾代价就会是\(KX\)

考虑一次取垃圾的过程,取了\(x_1<x_2<\ldots<x_s\)处的垃圾。

显然一定会先走到\(x_s\),然后返回途中收辣鸡。

推一下,代价会是\(5x_s+5x_{s-1}+7x_{s-2}+9x_{s-3}+\ldots+(2s+1)x_1\)

收了\(K\)次辣鸡,会有\(2K\)个系数\(5\)\(K\)个系数\(7,9,11,\ldots\),可以任意乘给\(x\)

显然最大的\(2K\)个拿\(5\),以此类推,前缀和高高就行了

https://atcoder.jp/contests/agc027/submissions/6921358


AGC018C Coins

首先消去\(C\)。所有\(A,B\)变成\(A-C,B-C\),最后答案加\(\sum C\),就不需要取\(C\)了,只要取\(x\)\(A\)\(y\)\(B\)

枚举一条分界线,左右都会从小到大取\(A/B\),用一个堆维护

https://agc018.contest.atcoder.jp/submissions/6918307


LOJ6294 touch

我是傻逼

先考虑\(\sum_{d|x}\mu(d)=[x=1]\),我们要求\(\sum_{path}\sum_{d|\gcd\{path\}}\mu(d)\),也就是对所有\(d\)求有多少条路径\(\gcd\)是其倍数

分开求跨过不确定边的路径和剩下的,不确定边把树分成了两棵树。

不跨过不确定边的路径直接求,枚举\(d\)后,只保留权值是\(d\)倍数的边。路径数是\(\sum \binom{siz}2\),并茶几维护即可

跨过不确定边的路径,\(u,v\)分出了两棵树,搜出两棵树所有点到\(u/v\)\(\gcd\)。两棵树的\(\gcd\)记为数组\(A,B\)

那么如果不确定的边权为\(w\),这部分答案是\(\sum_{a\in A,b\in B,d|\gcd(a,b,w)}\mu(d)\)

\(s_i=\sum_{a\in A,b\in B}[a|i][b|i]\)(注意0要特判)可以发现\(a\in A,b\in B\)会在\(\mathbb{lcm}(A,B)\)的倍数处计算一次。

那么如果\(i|w\),答案加上\(s_i\mu(i)\),就只会算一次了

https://loj.ac/submission/573269

猜你喜欢

转载自www.cnblogs.com/xzz_233/p/11366234.html