「Diary & Solution Set」August 2025 靡不有初,鲜克有终

尝试一下这种 Diary 和 Solution Set 放一起的风格。

2025.8.19

计数好难啊。怎么大家都这么强。

被晚上的奇妙讲题搞 emo 了。硬控我这种 visual learner 非常不友好。

To-do list 越来越长了:lf 的题单,验题,造数据,演讲稿,whk…… 快疯了。

不是很理解为什么觉得我们上学像上班一样准点来打卡,晚上准点下班,但是又要准点把人赶出机房。我不就是想加个班吗。

K个联通块

先套路求出 \(f_S\) 表示集合 \(S\) 内部连成一个连通块的方案数,然后做一个背包(子集卷积),设 \(dp_{S,i}\) 表示集合 \(S\) 划分成 \(i\) 个连通块的方案数,最后答案即 \(dp_{U,k}\),时间复杂度 \(O(k3^n+n2^n)\)

ARC165E Random Isolation

先把期望拆成每个连通块被选中的概率。考虑一个大小 \(>k\) 的连通块 \(S\) ,对于一个点,在原树上与其相连的不在连通块内的点一定被选过,记为 \(T\)。那么该连通块被选中的概率就是 \(T\) 中所有点在 \(S\) 所有点前面的概率。这个东西显然是 \(\dfrac{|S|!|T|!}{(|S|+|T|)!}\)

所以对 \(|S|,|T|\) 做树上背包,\(dp_{u,i,j}\) 表示以 \(u\) 为根,连通块 \(S\) 大小为 \(i\)\(T\) 大小为 \(j\) 的数量。转移是平凡的。

8.20

被奇妙模拟赛创飞了。死磕 T3 没写 T4 暴力,如果不是及时补了 T3 暴力就直接垫底了。

上午模拟赛,下午又有奇妙体锻时间,又是被硬控的一天。幸好晚上没有奇妙讲题。21:00 之后 lf 回来宣布有奇妙讲题,然后 yzq 把我坑上去,但是临场我直接踢皮球踢回 yzq 身上,在逃掉讲题的同时让奇妙讲题变成了正常讲题,一举两得,赢!

怎么还没几天就要开学了。whk 已经 3 months 没碰了。

感觉模拟赛没有好题,也没有时间做新题,今天就没有 Solution 了哦。

好累啊。

8.21

今天造数据的时候顺手翻了下之前做的 PKU 神秘题目,发现了一个当时想拿来出题的神秘贪心,可是到现在还没有付诸实践。

下午 zdj 讲 dp 优化的时候不小心露出了桌面背景,鉴定为《春风来》。

学习集合幂级数 ing…

随便写点什么。现代汉语比文言文好使多了。

噙不住眼角的泪水 按捺不住心底的伤悲
仍记得无数的因为 嘲笑着自己的愚昧
满身泥泞 脆弱不堪
在这没有星星的夜空下
在这不存在奇迹的世界
渴望着什么 追求着什么

哼着不成调的歌谣 踌躇着走向下一个路口
忘却了所有的因为 持有自己都不知晓的执念
畏首畏尾 盘桓周旋
在这街头巷尾沉睡的时刻
在这所有弦音沉寂的夜晚
坚守着什么 祈求着什么

CF840C On the Bench

为什么这个题我 7 月的时候秒了今天看到不会做啊。

首先原题等价于每个点有一个颜色,要求相同颜色不相邻。考虑容斥,钦定有 \(i\) 对绑在一起,容斥系数 \((-1)^i\)。然后容易用背包做这个东西。

[CEOI 2019] Amusement Park

DAG 计数,设 \(f_S\) 表示集合 \(S\) 组成 DAG 的方案数,\(dp_S\) 表示集合 \(S\) 的答案。转移时钦定 \(T\) 表示入度为 \(0\) 的集合,这首先要求 \(T\) 内部没有连边。于是有经典的 \(f_S=\sum_T (-1)^{|T|-1}f_{S\backslash T}\)。进而有 \(dp_S=\sum_T (-1)^{|T|-1}(dp_{S\backslash T}+E(S\backslash T,T)f_T)\),其中 \(E(S\backslash T,T)\) 表示 \(S\backslash T\)\(T\) 的边数。参照主旋律处理 \(E\) 的方法可以做到 \(O(3^n)\)

但是我常数太大被卡了(然后 yzq 给我卡常直接少了 1s,顺带痛批不写取模优化)。然后在题解区发现正解 \(O(2^nn^2)\)

8.22

今天上午 5 道题除了 T1 放了个 CF2100* 的奇妙题目都是我喜欢的计数。

11:20 的时候只有我一个人没过 T1 了。但是就是不想写。

怎么有人在打 duel,1800* 是赛点题可还行。

后来 tzy 打 duel 的时候被 1900* 硬控,所以我出手了,帮他们队杀死了比赛。

ABC180F Unbranched

鉴定为图计数板子。设 \(dp_{i,j,0/1}\) 表示 \(i\) 个点 \(j\) 条边,是否存在大小为 \(L\) 的连通块的满足条件的有标号无向图的个数。枚举 \(i\) 号点所在连通块大小 \(k\),带上经典系数 \(\binom{i-1}{k-1}\),分讨链和环的情况即可。

发现可以优化到线性对数,但是懒得写。还有去掉链和环的限制应该也能做。

发现一车人样例三没过但是交上去过了。这数据要么很小要么顶满,但凡有一个随机数据就卡掉了。接着发现大家的代码中都有神奇的 \(\binom{n-i+k-1}{k-1}\)。拼尽全力无法理解这个式子的含义,是我太落后了吗(

O(rand)

首先这个东西等价于对集合族 \(F\) 的划分计数,使得其中集合并为全集,交为空集。也就是说,对于划分 \(P\)\(\forall i\)\(\exists S\in P, i\in S\land \exists S\in P,i\not\in S\)。不太可能同时刻画这两个东西,考虑容斥。钦定 \(S\) 表示 \(\forall i\in S\),对于划分 \(P\)\(\forall T\in P, i\in T\),或者 \(\forall T\in P,i\not\in T\)。容斥系数 \((-1)^{|S|}\)

チーム分け

一个团队的限制在 \(a\) 最小的那个人身上,所以考虑在最小值处统计贡献。那么有 \(dp_{i,j}\) 表示考虑前 \(i\) 个人,有 \(j\) 个未匹配的方案数,每次 \(i\) 可以选择跟后面,或者作为最小值,枚举所在团的大小 \(k\),就有 \(dp_{i,j}=dp_{i-1,j-1}+\sum\limits_{k=1}^{i-j} \binom{j+k-1}{k-1}dp_{i-1,j+k-1}\)。接着后面那一坨是个卷积的形式,可以 NTT 优化,于是做到了 \(O(n^2\log n)\)

随即发现在 AT 上没有跑过别人的 \(O(n^3)\)

ABC253Ex We Love Forest

看到 Ex 梦回 ABC 还有 Ex 的时候。

首先去掉边的顺序,在统计答案的时候乘个 \(i!\) 就好。设 \(dp_{i,S}\) 表示加了 \(i\) 条边集合 \(S\) 为森林的概率,则答案为 \(dp_{i,U}\)。转移是个板的子集卷积,需要求 \(f_S\) 表示 \(S\) 内部连成树的概率。发现可以矩阵树定理做,但是太懒了不想写,所以大力容斥。

钦定 \(T\) 为度数为 \(1\) 的点,则 \(f_S=\sum\limits_{T\subseteq S,T\not=\emptyset}(-1)^{|T|-1}f_{S\backslash T}\prod\limits_{i\in T}P(i, S\backslash T)\),其中 \(P(i, S\backslash T)\) 表示 \(i\)\(S\backslash T\) 之间有恰好一条边的概率。这里 \(|S|\leq 2\) 需要特判。最后时间复杂度 \(O(n3^n)\)

8.23

怎么又被奇妙模拟赛创飞了。开场 20min 过了 T3 喂给 tzy,然后猜 T1 结论,假了。将 T2 题意转化为给定三种颜色的小球分别有 \(a,b,c\) 个,要求相同颜色不相邻的排列个数。这个东西直接做不会做,就跑去打了 T4 60pts 暴力。9:00 过 tzy 给我一个 T1 的 hack,很快修正结论就过了喂给他。哥们怎么做到做了一个小时还不如我一眼的?

然后做了 3h T2。紧接着 T2 尝试容斥,写了 \(O(n^3)\) 暴力。发现可以卷积优化,但是模数是 \(10^9+7\),直接 FFT 会丢精度,而时限只有 1s 所以我会的所有任意模数多项式乘法都被 ban 了。直到最后 30min 才反应过来可以直接算,但是写完发现过不了,而且对拍小数据都没有挂,输麻了!

赛后补题发现是最后一步系数算错了:把 \(N\) 个相同小球用 \(M\) 个相同隔板隔开,求没有小球相邻的方案数。赛时写成了 \(\binom{N+M}{M}\),但实际上是 \(\binom{M+1}{N}\)。痛失 60pts,基础什么时候烂成这样了(是不是但凡模数是 NTT 模数或者前一天晚上不想题好好睡觉就能做出来,这就是历史的偶然性吗(

yzq AK 了,%%%。

本来以为人均 360+ 结果 300pts 排到了 rk4,但是队线 330,恐怖。没有什么区分度,像我打满暴力都有 300,不是吗。

果然还是太菜了。

8.24

出了个自己都不会的计数,然后在下午才会了。决定分 25 个测试点,第一问给 \(25\%\),我真是良心出题人(

演讲稿被催稿了,怎么好不容易放个假还要加班啊。直接搬个议论文上去得了。

8.25 ~ 8.26

放假期间加班 ing... 没时间做题。

哦不对还是打了一场 CF div2,喂了 B 的一句话题解到群里,还有 D 明明 \(O(n)\) 直接就秒了几个人愣是到比赛进行 1h 时才过。甚至我过的时候 xyt 还在调平方暴力。yzq F 没调出来。

8.27

出的奇妙计数假掉了。好困好困,好久没有好好睡觉了。

8.28

又是神秘模拟赛。鉴定为 ds 场,T1T2 装模作样放了两个计数。开场 yzq 说看过 T3 直接开始写,tzy 想了一会儿之后也开始写了。T1 不是很会,先写 T2,发现用 map 大样例跑 4s。接着想了一会儿 T3,发现最值分治暴力枚举小的一边就是对的,类似 DSU on tree,很快写了过了。突然发现 T1 可以矩阵快速幂,也很快过了。回去卡 T2,改成 sort 就跑得飞快。T4 发现可以对拆出来的 \(O(n\log n)\) 个区间直接做 dp,上树状数组优化就可以。拆贡献之后差分前缀和处理一下就做完了,稍微调一下小数据也过了。

赛后听说 T4 可以容斥,做复杂了。lf 口出狂言队线 400(

posted @ 2025-08-19 19:22  _Communist  阅读(34)  评论(0)    收藏  举报