技巧与结论

Page Views Count

关于子序列的问题,回归到原序列中是选定位置 p1,p2pk,对应值 v1,v2vk,此时 (pk,n] 部分可以任意选,[1,p1) 不能有 v1(p1,p2) 不能有 v2,以此类推。

例题:CodeForces-660E Different Subsets For All Tuples *2300


字典序比较转化成一个前缀一致,后一位不同,枚举不同的这一位。要求字典序较大的最小串或字典序较小的最大串,优先匹配尽量多之后再出现不同位置。

例题:CodeForces-1037H Security *3200


对于任何满足 fn=xfn1+yfn2 的序列,都有:

fn+m=y×fn×fm1+fn+1×fm

gcd(x,y)=1 时,还满足:

gcd(fn,fm)=fgcd(n,m)

证明:闲话

例题:Luogu-P1306 斐波那契公约数BZOJ-4833 最小公倍佩尔数


一个由中国剩余定理产生的推论:

对于同余方程组:

{x1ab(modp1α1)x2ab(modp2α2)xkab(modpkαk)

以及同余方程:

xab(modi=1kpiαi)

假定所有 x 的取值范围均为小于方程模数的自然数,则该方程解的个数等于拆成若干模数互质的方程解的个数之积

显然满足 xamodi=1kpiαi=b 就一定满足 xamodpiαi=b

于是方程的解 x 一定与方程组中每个方程 i 的一个解 xi,j 在模 piαi 意义下同余,从而构造出线性同余方程组,解在给定取值范围内是唯一的。

因此存在多少组构造出的线性同余方程组,就存在多少个解。


在点分树上,节点 uv 的祖先当且仅当原树上路径 (u,v)u 是第一个被选取的节点。

随机选取下一个分治点同样具有这样的性质,复杂度的期望可根据期望的线性性求出。即一个节点的深度为其产生的贡献,深度等价于点分树上祖先个数(包括自己)。

上面已经说到 uv 的祖先当且仅当第一个被选取,概率为 1dist(u,v)

因此答案应为:

u=1nv=1n1dist(u,v)

可以统计每个距离对应路径个数,使用点分治以及 FFT 加速卷积,复杂度 O(nlog2n)

例题:BZOJ-3451 Normal


期望的线性性:

E(X+Y)=xy(x+y)P(X=x,Y=y)=xyxP(X=x,Y=y)+xyyP(X=x,Y=y)=xxyP(X=x,Y=y)+yyxP(X=x,Y=y)=xxyP(X=xY=y)×P(Y=y)+yyxP(Y=yX=x)×P(X=x)=xxP(X=x)+yyP(Y=y)=E(X)+E(Y)


计算 l=1nr=lnf(l,r) 可以考虑计算 l=1nr=1nf(min(l,r),max(l,r)) 再处理。


i=1mE(x=i)=i=1mi×P(x=i)=i=1mP(xi)

例题:AtCoder-ABC295_E Kth Number


平均数等于 x 等价于 i=1nsix=0,也即 si<xxsi=si>xsix

例题:AtCoder-ARC104_D Multiset Mean


LIS 的计数可以枚举偏序关系(离散化后的数组)再填值域。

例题:AtCoder-ARC104_E Random LIS


博弈论可以考虑“模仿操作”,即后手会由于某种目的模仿先手的操作从而保持局面没有实质改变。


对于树上任意节点 u,其到所有节点路径中最大的一条 (u,v)v 一定是树上直径的一端点。

证明考虑路径 (u,v) 以及直径 (x,y) 拐点 pq,如果 (u,v) 最大则说明将路径与直径各自一半以及拐点的连边应当比直径更大。

例题:AtCoder-ARC108_F Paint Tree


单模式串子串匹配或回文子序列匹配,可以考虑使用卷积。

对于回文而言就是卷到对称中心二倍的位置,正常的匹配可以将模式串翻转就等价于回文了。

通配符匹配可以先卷积求出有多少位置有通配符,再将通配符设成 0s 串字符从小到大设成 base0,base1base25t 串字符从小到大设成 base25,base24base0,卷积后结果应该是 base25 的幂,指数为长度减去通配符个数。

例题:Luogu-P4199 万径人踪灭Luogu-P4173 残缺的字符串


答案要求所有满足条件集合的 gcd 之和,大多是只考虑 i 的倍数再容斥,同时只考虑 i 的倍数指向了根号分治。


题目形如每个元素有一权值 vi,可以放在位置集合 Si,每个位置只能放 aj 个元素,求合法的最大权值和。

使用 拟阵 或模拟费用流的每次增广可以证明从大到小能放即放一定不劣,接下来就是常规二分图匹配,从大到小加入元素判断是否有完美匹配,使用 Hall 定理。可能需要数据结构维护。

例题:Luogu-P9168 省选联考 2023 人员调度


多组询问,每次询问规模为 kikin 同级,则 ki 的取值有 O(n) 中,可以离线暴力。


树上距离满足某个条件的二元组、三元组计数,考虑在 LCA 而不是路径交点位置统计,这样可以长链剖分优化。

例题:Luogu-P5904 POI 2014 HOT-Hotels 加强版


树上黑白染色连通块统计,在连通块深度最小位置记录答案,那么只需判断 colu=1colfau=0


有序链表插入 O(logn),删除 O(1),可以使用只删除莫队降低复杂度。

例题:Luogu-P8078 WC 2022 秃子酋长


树上 DP 和组合计数有关时,需要排列数之类的情况可以改成算概率,这样子树间独立。

例题:UniversalOJ-607 UR#20 跳蚤电话


树上 k 级祖先可以重链剖分在 DFS 序上暴跳链顶,再在某一重链取到结果(重链上 DFS 序连续),比倍增常数小。

树上关于 k 级祖先的二分也可以重链剖分在 DFS 序上暴跳链顶,再在某一重链上二分,比直接二分少一个 log


莫比乌斯反演后不能直接数论分块且多次询问的问题,可以考虑对 nT 关于 B 分治,通常是大于直接枚举暴力算,小于预处理函数。

例题:Luogu-P4240 毒瘤之神的考验Luogu-P5572 CmdOI 2019 简单的数论题


形如 |ai| 的可以设 S+=ai[ai>0],S=ai[ai<0],这样就转成 max(S+,S)min(S+,S)=S++S2min(S+,S)=|ai|2min(S+,S),可以化简问题。

例题:AtCoder-ARC107_F Sum of Abs


统计有多少节点是祖先中第一个符合条件的,也就是有多少节点本身合法且父亲不合法,就是对合法节点构成的子树计数,有等式:

vsubtree(u)degv=2sizu1

因此令合法节点权值为 2degu,求权值和即可。(应用前提是满足父亲合法儿子一定合法。)

例题:Luogu-P4183 USACO 2018 JAN Cow at Large P


一个图的最小度数不会大于 2m,可以暴力枚举。

例题:Luogu-P8905 USACO 2022 DEC Strongest Friendship Group G


有等式 n2=2(n2)+(n1) 成立,当贡献为平方时,可以考虑拆成点对计算。


曼哈顿距离转切比雪夫距离:

曼哈顿距离 |x1x2|+|y1y2| 可以表示为 max(x1x2+y1y2,x1x2+y2y1,x2x1+y1y2,x2x1+y2y1),这等价于 max(|(x1+y1)(x2+y2)|,|(x1y1)(x2y2)|),也就是 (x,y) 改为 (x+y,xy)

切比雪夫距离转曼哈顿距离:

直接倒着回去变成 (x+y2,xy2) 即可。

例题:AtCoder-AGC034_D Manhattan Max Matching

作者:SoyTony

出处:https://www.cnblogs.com/SoyTony/p/Tricks_and_Consequences.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   SoyTony  阅读(291)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示