WC 2024

信息学竞赛中的持久化数据结构与技巧

CF1340F. Nastya and CBS

题目选讲

ARC151E. Keep Being Substring

如果 XY 的最长公共子串的长度 L>0,那么答案就是 P+Q2L。否则,最优方案一定是将 X 变成单个字符 c,然后进行若干次在它前面或后面加入一个在原串中和 c 相邻的字符,再把 c 删去的操作。当 cY 时,就可以扩展出 Y 了。

做多源汇 BFS 即可。时间复杂度 O(N)

IOI 2023. Closing Time

称一个点的类型是它能被 {X,Y} 中的几个点到达。设 X,Y 间路径的点集是 S。只要整棵树上有一个 2 类型的点,那么 S 中的所有点都应当是 1,2 类型的。

不妨假设树上有至少一个 2 类型的点。此时,提前钦定 S 中所有点 u 都付出了 min(dist(u,X),dist(u,Y)) 的代价。将整棵树分为距离 X 更近和距离 Y 更近的两个连通块,此时的问题是:

对于每个点 u,其可能有一个父亲 fu,表示 fu 的类型需要大于等于 u 的类型。u 选择类型 i 有一个代价 cu,i,问在总代价不超过 K 的情况下,所有点的类型之和最大是多少?

注意到父亲的限制是没有用的,因为原题的条件保证了 i,cu,i>cfu,i。于是这个问题就是 Cardboard Box
了。

IOI 2023. Robot Contest

组合计数中的递推问题

无标号组合类的多重集运算

A=MSet B=αB(Seq α).

对应的生成函数是

A(x)=n1(1xn)[xn]B(x).

进行一些推导:

A(x)=exp(n1[xn]B(x)ln(1xn))=exp(n1[xn]B(x)k1xnkk)=exp(k11kn1[xn]B(x)xnk)=exp(k1B(xk)k)

做反演,可以得到

B(x)=k1μ(k)klnA(xk).

假如

A=11qx,

可以通过上面的式子得到 B 的数列。

A 有两种组合意义:

  1. 字符集大小为 q 的字符串;
  2. 有限域上的首一多项式。

对应地,B 也有两种组合意义:

  1. 字符串的 Lyndon 分解;
  2. 将多项式分解成若干不可约多项式之积。

微分算子

定义

(n0anxn)=n1annxn1.

对于 OGF,有 xn=nxn1;对于 EGF,有 xnn!=xn1n1

组合意义是,OGF 相当于从一个大小为 n 的元素中选择一个取出来,将其变成一个大小为 n1 的元素;对于 EGF,则是直接将其变成一个大小为 n1 的元素。

微分的运算律:

  • 可加性:(A+B)=A+B
  • 乘法:(AB)=(A)B+A(B)
  • 复合:(AB)=((A)B)B

多重集构造的递推式(有标号)

B=MSet A,

B=expA,

求导,得到

B=BA,

提取系数即可得到

(22)bn=k=1n(n1k1)akbnk.

例子:连通图

G 是全体无向图的组合类,C 是全体无向连通图的组合类,有 G=MSet C。直接代入 (22) 式即可得到一个递推。

假如对 G 求导,可以得到

G(x)=n02(n+12)xnn!=n02(n2)(2x)nn!=G(2x).

通过 一些推导,可以得到

C(x)=C(x)(2C(2x)C(x)).

这也导出了 C 的另一种递推式。

例子:n 王问题

问题:有多少个 n 阶排列 p 使得相邻两项之差的绝对值始终不是 1?设这个数列是 An

考虑容斥,钦定排列中若干个 i 一定要满足 |pipi+1|=1,这将 p 划分成了若干连续段,每个长度 L>1 的段带有 (1)L1 的容斥系数。

所以一段的带有容斥系数的生成函数就是

F(x)=x+2i2(1)i2xi=x1x1+x.

由于这些连续段是可以任意排列的,所以这里可以用复合来描述:

A(x)=(n0n!xn)F

S(x)=n0n!xn,由于递推式 Sn=nSn1,有

S(x)=1+n1(n1)!nxn=1+xn1(n1)!nxn1=1+x(xS(x))=1+xS(x)+x2S(x).

所以有

A=1+FA+F2S(F).

S(F) 不好处理,考虑逆用求导的复合公式:

(A)B=(AB)B,

所以

A=1+FA+F2AF.

这样就导出了 An 的递推式。

思考:2-正则图

A 是 2-正则图的组合类,求其 EGF A(x)

C 是简单环的组合类,有 A=MSet C

C(x)=n3(n1)!2xnn!=12n3xnn=12(ln(1x)xx22).

于是

A(x)=expC(x)=exp(12(ln(1x)xx22))=exp(ln1xx2x24)=(1x)1exp(x2x24).

杂题选讲

IOI 2023. Longest Trip

IOI 2023. Soccer Stadium

CF1175G. Yet Another Partiton Problem

暴力自然是设 fi,j 表示将 a1,a2,,aj 划分成 i 段的最小代价。由于 fifi+1 之间的转移形如

Fi=min0j<i{Gj+(ij)maxj<ki{ak}},

考虑 CDQ 分治来做这个东西。假如现在要算 [l,m](m,r] 的贡献,那么式子中的 max 可以分取在 [l,m] 和取在 (m,r] 两类讨论,而这两类都是斜率优化。时间复杂度 O(nklogn)

关于斜率优化:

  • 形如 f=min(x,y)S{ykx} 的式子可以看作,最小化过 (x,y) 且斜率为 k 的直线在 y 轴上的截距;
  • 注意特判两个点横坐标相同的情况。

TopCoder 14379. RPSRobots

集训队互测 2018. 完美的集合

集训队互测 2018. 完美的队列

CF506E. Mr. Kitayuta’s Gift

随机化和近似算法选讲

IOI 2023. Overtaking

IOI 2023. beechtree

2020-2021 集训队作业. Storm

WC/CTS 2023. 比赛

作者:alan-zhao-2007

出处:https://www.cnblogs.com/alan-zhao-2007/p/18052742

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

posted @   Alan_Zhao_2007  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题