2024.4 总结 3 / 飘零在无间 决裂尘埃世界

P3750

首先考虑必杀次数比较小的怎么算,不难发现一直按最后一个 1 是对的,理由是最后一个 1 的位置 x,之前的位置改不了 ax,按多倍的 x 一定不优。

那只要处理出 i=1,...,n 的因数,然后暴力算就行了,有一个上界 n,这时候已经有 80pts 了,设算出次数为 cnt

然后再找一下性质,按的方案是固定的,因为任意一个按钮都无法通过别的替代,考虑 dp,设 f[i] 表示还有 i 个按钮要按,随机按按掉一个要按的期望次数,那么 f[i]=in×1+nin×(f[i]+f[i+1]+1),前面那个表示按到一个需要的概率是 in,次数是 1,后面那个是按错了的概率是 nin,那么要按回去,需要 f[i+1] 次,在按少一次,需要 f[i],还有浪费的当前 1 次。

转出来这个柿子,得到 f[i]=n+(ni)×f[i+1]i,边界 f[n]=1。出答案还要一个分讨,如果 kcnt,答案就是 cnt,否则,答案是 i=k+1nf[i]+k


AGC005D

考虑容斥,设 F(s) 表示钦定 s 个点 |Pii|=k 的情况下的方案数,那么 Ans=i=0n(1)sF(s),然后考虑怎么求 F 就行了......?

画一个二分图,左边表示 p1,..,pn,右边表示 1,...,n,考虑连边 LiRik,LiRi+k,画画图,会出现 2k 条链,把链条拉直放好,相邻的可以连边,这个东西很好 dp 了,设 f[i][j][0/1] 表示前 i 个点,连接了 j 条边,最后一个点没/有连边的方案数,注意不同链连接的地方不能选择连边,初始化 f[0][0][0]=1

f[i][j][0]=f[i1][j][0]+f[i1][j][1],f[i][j][1]=f[i1][j1][0]

然后 F(s)=f[2n][s][0]+f[2n][s][1],做完了 >.<


ARC160D

首先考虑去重,区间 +1 的操作看做在左端点做,这样区间 +1 的操作钦定每个点做不超过 k 次即可,正确性大概是从左到右加方式固定。

然后考虑容斥,Ans=i=0nk+1(1)i(nk+1i)(2n+mkk(i+1)2nk),过程可以 gf。


ABC162E

直接把柿子化开即可,欧拉反演,答案是 i=1nϕ(i)nin


P3338

求的是 Ansj=i=1j1qi(ij)2i=j+1nqi(ij)2,设 g[i]=1i2,特别的 g[0]=0,那么有

Ansj=i=1jq[i]g[ji]i=jnq[i]g[ij]

左边已经是加法卷积了,直接 FFT 即可,考虑转换右边,先枚举 i=ij,考虑 q[i]q[ni] 那么有下柿 >w<

i=jnq[i]g[ij]=i=0njg[i]q[(nj)i]

还是加法卷积,再来一次 FFT 即可,注意不能三次变两次,掉精度严重,过不掉,答案 Ansj=Ans1[j]+Ans2[nj] >w<


AGC059C

首先这是一个完全图,然后每条边 (x,y) 要给定一个偏序关系 xy/yx 表示 Px>Py/Py>Px,已知的偏序关系不能在连边,我们分析一下:

  • 不能有环

  • 如果当前时刻有一条 xy/yx 的路径,不能再连接 (x,y)

  • 图是完全图,结合上一条,对于链好像只能从下往上比较有顺序的连边

我们考虑具体表达一下约束,考虑已经有一条链 ABC,那么 (A,C) 不能最后加入,而我们要从下往上,每三个都必须满足,然后就可以归纳,所以我们考虑三个点 k,x,y

假设 (x,y) 是最后加入的,那么 k 必须是 x,y,z 中最大或者最小的,不难会导致不满足,于是对于 (x,z),(y,z) 有一个对于 k 同向的要求,这个是一个 2-SAT 啊。

那么拓展域并查集即可,设最后有 Ans 个联通块,答案就是 2Ans2 了,DAG 也没有环。


P3763

使用多项式卷积进行字符串匹配,轻微卡常。具体而言就是设当前字符为 1 别的为 0,对应位乘起来再相加可以得到匹配数,保证和为定值可以翻转一个数组。


AGC028B

考虑 「i 的期望次数」×ai,最后乘上 n! 即为答案。

我们考虑删除 ij 也贡献的期望,那么 [min(i,j),max(i,j)] 中最先被删除的是 i,概率是 (|ij|+11)!(|ij|+1)!=(|ij|+1)1,考虑 sumi=i=1n(i+1)1,答案显然是 Ans=i=1nai×(sumi1+sumni+1)


AGC015D

硬是控了我不知道多久。

二进制下考虑,首先发现相同前缀没有影响,特判掉 x=y 的情况,去掉 x,y 相同前缀后讨论,剩下的情况 x/y 最高位为 0/1,首先 [x,y] 可以成为合法答案。

然后是一个非常好分讨,爱使我大脑旋转。设 y 的最高二进制位的值为 M,次高为 Sec,为了方便下述 l,r 表示实际取的数。这里 M=2k,表示第 k 位为 12M1 的含义是取了二进制下面的 0,...,k 位都是 1

  • 考虑答案最高位是 0,这种在 [x,y] 里面已经全都有了(或不出比 x 小的,或不出比 M1 大的,这个区间合法因为都被 [x,y] 包含了),后面讨论的情况答案最高位都是 1

  • 考虑使用小于 M 的数,因为讨论的是答案最高位是 1 的,答案至少要或上 M,那么最小的情况是 x|M,或不出更小的了,最大的情况是 (2M1)|M 也就是 2M1,或不出更大的了,那么做出来的是一个区间 [x|M,2M1],很满了。

  • 考虑不使用小于 M 的数,答案下界是 M,然后往上面或,可以选择 [M,y] 中的任意数,那么是满的比较随便,但是最高位的不超过 Sec,那么做出来的区间是区间是 [M,M|(2Sec1)],不能再多了。

对于上述区间取并,大小就是答案,注意去除前缀后有可能出现左端点为 0,要初始化 lst=1 捏。


P4173

首先令 0,cca+1,然后长度相同的字符串 A,B 匹配成功的条件是 i=0len(AiBi)2AiBi=0,这个柿子拆开之后跑三次 NTT 就行了。


CF1453F

我不会 dp,杀了我吧 /kk

考虑一个合法鸽子序列 p1,...,pn,分析合法条件,首先令 aiai+i 表示最多到达某一个位置。

  • apipi+1

  • api<pi+2

  • 对于 pi<j<pi+1 中的 j 要满足 aj<pi+1

这样子就充分必要了,前两条保证了只使用实际路径的点的情况下的路径唯一性,第三条保证了不能中途跳到其它点,大概就是,跨越的考虑 pi 跳到 >pi+1 的点没有必要,因为在考虑 pi+1 的时候肯定会被考虑,然后 pi 肯定可以跳到 j,那么 j 的路径就必须不能跳到 pi+1,那么间接跳越界的事情不会出现,因为全都没有前途跳到 pi+1

然后就能考虑 dp 了,设 f[i][j] 表示 pn/pn1i/j 时最少杀死多少鸽鸽,你问鸽鸽怎么转移,祂用灵魂告诉你可以 f[i][j]=min{f[j][k]+val(k,j)},这个 val 表示区间里面要被割掉的鸽鸽数,现在有一个立方做法了,爱来自鸽鸽。

然后考虑优化这个 b 东西,做一个前缀 min 然后倒着枚举就行了,做完了。


P2607

内向基环树,不能选相邻,每个联通块分别计算,环随便断再直接 dp 就行了,要钦定一个叶子的选项,注意特判 out[x]=y,out[y]=x 这种环,但是不能 map,会 mle,说句鲜花 map 我已经写出心理阴影了。


CF1120D

刚看到题面的我看着生成树标签瑟瑟发抖。。

考虑摊开叶子节点的 dfn,那么一个节点 i 相当于可以花费 wi 的代价修改一个区间 Li,Ri,问这个序列任意初始值的情况下能清空的最小代价。

区间修改考虑差分,原序列是任意的,那么差分数组是自由的,因为每一位都能清空,所以上面的差分值都能间接传递到 dn+1,所以,每个点相当于有一条边 (Li,Ri+1):ai,答案就是最小生成树了。

至于答案并,每次把边权相同的放在一起考虑一下就行了。


CF1527E

线段树优化 dp 即可,贡献可以栈+线段树维护,注意常数。


CF1852C

首先题目相当于每次可以区间 +1 问在 modP 意义下原序列最少多少次可以变成目标序列。

如果没有模,这是一个 lianggj 题,考虑差分数组 d,那么 Ans=i=1n[di>0]di

考虑一个模意义下合法的序列,{ai+bi×P},题目问的其实就等价于任意的这种序列的答案的最小值。

这个 +k×P 在差分数组上是取 x<ydxdx+P,dydyP,然后这个东西的最小化用堆写一个反悔贪心即可。


P2767

考虑树形 dp,设 f[i][j] 表示 i 个点根有 j 叉的方案数,初始化 f[0][i]=f[1][i]=1,考虑转移 f[i][j]=k=0i1f[ik][j1]×f[k][m],注意题目是不超过,但这里直接取了 m 的原因是空子树直接被算进去了。


ARC121D

n 不是很大,考虑平方以上的做法。

对于单独匹配的,我们可以补代价 0 的物品进去,这需要枚举总长度 len[n,2n],2|len,然后就变成了 O(len) 左右的两两匹配最优。

对于最大的 ai,肯定要跟最小的匹配,不然不优,删去这两个,还是要最大最小匹配,发现是环形匹配,然后就做完了。


ABC302Ex

考虑建图,对于每一对 (ai,bi) 建边,考虑一个图的答案。一个联通块,如果没有环,那么每一条边都能占有一个点,答案是边数,如果有环,那么每一个点都能被边占有,那么答案是点数,设联通块的 点数/边数 为 n/m,那么答案其实就是 min(ni,mi),可以写一个可撤销并查集维护。


AGC002E

首先相对顺序无意义,考虑 ai,然后一次操作的含义就是去掉左边一行或者去掉下面一行,不妨放在坐标系上面考虑,就是可以从局面 (x,y) 变成局面 (x+1,y),(x,y+1),这里 贴个图

其中红色代表比败局面,绿色代表必胜局面,画画的依据是能到达必输局面的是必赢局面,不能到达必输局面的是必输局面,设 f[x][y] 表示先手在 (x,y) 的输赢性。

有一个显然的性质,f[x][y]=f[x+1][y+1],那就这样子走到一个较为边缘的节点,然后按照画画的依据走两条分叉做就行了,往右的不会超过 O(n),可以 BF,往上的怎么办呢,注意到对于相等的一段 a[x] 头顶的 f 可以通过奇偶性求,而往上的这一段路按照奇偶性 f0/1 交替出现,那么可以剪枝优化掉。


P3523

首先二分,然后问题变成了选不超过 m 关键点使得关键点到选点的最小距离能不能都不超过 k,直接贪心 on tree 就行了。设 f[x] 表示没选的最远的关键点距离,g[x] 表示选了的关键点的最短距离,转移是一个迷你分讨。


CF508E

有人秒不掉黄题,直接贪心即可。具体而言,一直在里面塞括号直到满足条件,这样不劣,如果过了还往里面塞完全可以塞到外面一层。


CF1144G

比较那啥的是贪心可以有一个最长化然后数据结构维护好像能做,但是贪心就够了。

考虑维护的 下降/上升 的链的结尾为 L/R,对于当前 ai,做不了就去死,只能接在其中之一就接,不然就是下图情况,如果 ai=ai+1 那肯定一个一条,于是不妨假设 ai>ai+1,翻转一下就是 ai<ai+1 了,故不赘述。考虑情况 如题所示

如果 ai 接在下降链,ai+1 两个链都能接,如果 ai 接在上升链,ai+1 只能接在下降链,对于发现不管左图接 A/B 下降都不会劣于上升,于是贪心的,如果 ai>ai+1 就接在下降,否则上升。


CF1342E

首先要不然每行放一个,要不然每列放一个,否则不符合条件,注意到除了 k=0 的情况两者是同样的问题,我们考虑钦定每行放一个然后最后再乘系数 1+[k>0]

少放一列多一对互相攻击,恰好 k 个棋子互相攻击,那么就是把棋子放在 nk 列里面,每一列都必须有棋子,首先选列有一个 (nk) 的系数,然后问题变成了把 n 个棋子放进 mnk 列里面,每一列都必须至少放一个的方案数。

考虑容斥,设 f(i) 表示最多放 i 列的方案数,显然 f(i)=in,容斥可得这个方案数为 Ans=i=1m(1)mif(i)(mi),乘上以前的系数就是题目的答案。


P5363

首先,将连续一段没有棋子的棋盘看做一堆 ai,每次移动棋子相当于放一些 ai 的去到 ai1,这个东西是一个 Nim 阶梯博弈,先手必胜当且仅当 iai0,理由大概是把奇数位的 ai 看做 Nim,在 Nim 的必胜方肯定希望只按照 Nim 去玩,那么对于另一方,如果其尝试从偶位往奇位移动,必胜方一定可以通过一次移动变成原本的 Nim 非 0 的局面。

然后考虑大小为 n 的棋盘放 m 个棋子玩 Nim 先手必败的方案数,必胜的直接总的去减必败的就有了。首先对于一个局面 {a1,,ax} 满足 2|ai,跟局面 {a12,,ax2} 一致,考虑递推,设 di 表示 n=2i 的方案数,额对于 m 是偶数其答案肯定是 0,枚举奇数堆个数为 4j+2/4j+4

d2i+1j=0min(i,k4)(k4j+2)dij,d2i+1di+1+j=0min(i,k4)(k4j+4)dij

答案的话可以考虑插插板什么的,于是就有 km2,Ans=i=0n2di(n2i+mk1nm1)


CF1152D

题目求一个长度为 2n 的可匹配括号序列组成的 trie 树的最大匹配数。画图 找规律,其实有大量相似子问题,而且答案其实是奇数层的节点数。

不妨 dp,设 f[i][j] 表示 i 个左括号 j 个右括号的方案数,那么显然有 f[i][j]=f[i1][j]+f[i][j1],然后考虑第 i 层的节点数 sumi=x+y=if[x][y],那么 Ans=x+yf[x][y],代码离谱的好写。


CF1375F

首先不难发现只有 (a,a+k,a+2k) 的最大数被约束为不能操作的这种情况后手次轮必败。

然后考虑怎么构造出那种局面,考虑一个局面 (a,b,c) 中的 c 不能操作,那需要不管在 a/b 做加法都能使其最大且序列变成等差数列,不妨列出方程 a+dc=cb,b+dc=ca,然后其实都是 d=2cab

于是不妨随便初始给一个数 +inf,然后按照上述方法给一个 2cab,然后输出等差数列的公差。


AGC002F

不难发现白色序列合法的充要条件为 ,考虑对这个条件 dp,不妨设 f[i][j](ij) 表示放入 i 个白球和 j 种颜色球的方案数,转移考虑第一个放什么 >w<

f[i][j]=f[i1][j]+f[i][j1]×(nj+1)×(n×ki(i1)×(k1)1k2)

其中 f[i1][j] 是直接放入白球塞进开头的贡献,后面那一坨是放入新的一种颜色的贡献,两个系数分别来自选颜色以及选位置。


AGC059E

这种题到底是谁在出谁在会。

判断边缘的合法性,考虑构造矩阵 mat 满足相邻两位差绝对值是 1 且与 c 同余,矩阵的边缘很好确定且每一个 a 都存在唯一 mat,所以有一个必要条件必须有按照上述方式构造合法的矩阵。

不够充分,再判断一个对于 (x,y),(x,y) 满足 |mat[x][y]mat[x][y]||xx|+|yy|,这个判断边缘的即可。

然后给出一种合法构造 a[i][j]max{a[1][j]+i1,a[n][j]+ni,j1+a[i][1],a[i][m]+mj},奇偶随 (i+j) 变换且相邻不等。


AGC052E

跟上个题目一个 trick,考虑构造出 a/b 满足相邻位差绝对值为 1 且与 s/t 同余,这里需要钦定一对 a1/b1,但是考虑到序列其实重要的只有差,所以可以任意钦定 a1 然后考虑哪个 b1 最优。

现在考虑一次变换的含义,对于一个点 i 满足 ai1=ai+1,如果 ai>ai1 就使 aiai2 反之 aiai+2。首先这个 b 东西要求 a,b 对应位奇偶性相同,考虑到原题 a/b 相邻位有一个异奇偶所以只要加上一个 a1,b1 同奇偶,那么之后操作每次消掉 2 的差,每次可以选一个最大/最小的 ai 来操作,那么次数就是 i=1n|aibi| 啦 >w<

然后考虑最小化柿子,先随便弄一个傻 b,然后考虑实际的 bi=bi+k,不妨令 ciaibi,那么就是要最小化 i=1n|cik|,注意这里的 k 要满足模 3t1 同奇偶,模 2a1 同奇偶,取最中间的就最优秀了。


AGC018F

考虑使用 1/0/1 构造,那么对于一个点,因为答案要求的 1,1 奇偶性一定,假设其有奇数个儿子,那它必须赋值为 0,否则可以考虑其有偶数个儿子两两配对之后和为 0,再给当前点一个 +1/1。对于偶数个儿子的点,其值决定于自己,否则,其值决定于决定其其落单的儿子的值的东西。

新开一个图,我们把需要配对的在新图上连边,对于决定儿子值的点两两连边,然后直接二分图染色就可以了,这样连出不了奇环,无解就直接在树上判掉。


P4001

首先题目是求一个有约束的 【模板】最小割,但是不难发现在这个题目中最小割=最短路,具体一点,就是对于一个特定的划分 S,T 中间连的边是最小割,于是可以求这种三角形的最短路。这个 b 东西有一个高级的名字,平面图最小割转对偶图最短路。


P2012

使用指数生成函数 f(x)=i=0xii! 对应排列,有一个泰勒展开 ecx=i=0cixii! 这样的。

考虑对每一种写出对应的 EGF 然后乘起来,三种分别如下:

  • a(x)=i=0xii!=ex

  • b(x)=i=0x2i(2i)!=ex+ex2

  • c(x)=i=0x2i+1(2i+1)!=exex2

于是我们所需要的 f(x)=(a(x)b(x)c(x))4=e12x4e8x+6e4x4+e4x256,挺好的。

答案是 n![xn]f(x),于是乎 Ans=12n4×8n+6×4n+(4)n256,注意 256mod109 下没有逆元,以及直接写 2n 这种东西就会爆 long long 了,需要用拓展欧拉定理稍微处理一下 qwq


P4178

淀分治板子题,计算答案可以使用双指针。


P4149

还是淀分治板子题,计算答案需要使用桶。


P3232

先算出点的期望到达次数,注意 1,n 的影响不一样捏,具体而言捏一个跟度数相关的高斯消元,然后通过点的期望次数考虑边的期望次数,然后排序贪心就行了。


CF1458D

考虑 01,11, 对于每一种前缀 sum 建立一个节点,对于一个可翻转区间 [l,r] 满足 suml1=sumr ,这个 b 东西在图上成环。

然后考虑区间操作的含义,就是反着走环。往回走的权 0 否则 1,问题转化成了查找一个字典序最小的欧拉路,贪心求出即可。具体而言,在 xx1 有边,如果 xx+1 有边那么 xx1 需要有多条边。

posted @   Hypoxia571  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示