2024.5 做题记录
362. CF553E Kyoya and Train
直接 dp,设 为 的最短路, 为到了点 用了 秒,还需要的最小期望花费。显然对于 有 ,否则有:
显然是一个差卷积。分治 FFT 即可。
363. CF1965E Connected Cubes
智慧构造。
往每一行之间加一个空行(具体可以把这一行一直往右拖),然后每次用同一种颜色填充空行就可以了。
364. CF1172C2 Nauuo and Pictures (hard version)
和 wrx duel,结果两个人都没做出来。
这道题最妙的思想就是把每个照片拆成 个权值为 的小照片,那么每个小照片的地位都相等,算出每个小照片最后期望的权值再乘 就是答案。
剩下的部分随便 dp 即可。设 为前 次访问到了 个(不)被喜欢的照片的概率, 为前 次访问到(不)被喜欢的照片中有 次访问到了当前的小照片的概率。转移是 trivial 的。
365. POJ3734 Blocks
考虑答案的 EGF 即为 ,EGF 第 项的系数即为 ,所以答案即为 。
366. CF1967D Long Way to be Non-decreasing
考虑我们类似双指针一样维护当前的 ,在它自增的同时一个一个 check。这样避免了类似“一个点在基环树上跳 步能到达的编号 的最小点”的问题。(事实上这一步非常妙。)
那么现在只用判断“ 和 能否在 步内可达”。这是 trivial 的。维护 dfn 序,要么 在 子树内,要么 能跳到 所在环。
367. CF1967E1 Again Counting Arrays (Easy Version)
贪心地判断一个 是否合法: 能增加就增加,不能增加就减少,这样能保证尽量使得 。
这能导出一个 dp 做法:设 为考虑到第 位,当前 的方案数。注意到一旦 那么后面的 就可以任选,所以这个 dp 是 的。
我们还可以考虑统计不合法的 。枚举在某个位置 。那么前面 向上走的步数可以算出。
现在相当于要算 走到 ,并且不触碰直线 和 的方案数。直接反射容斥(类似 UOJ424 [集训队作业 2018] count),设触碰直线 为事件 A,触碰直线 为事件 B,那么答案即为 , 为终点依次沿 中直线对称后,起点到终点的方案数。这个方法的复杂度为 。
这样我们的时间复杂度变为 ,可过。
368. BZOJ4228 Tibbar 的后花园
条件相当于图由若干个链连通块和若干个环连通块组成,并且每个环的大小都不是 的倍数。
设 个点组成一条链的 EGF 为 ,组成一个环的 EGF 为 ,那么答案的 EGF 即为 。
直接多项式 exp 即可。时间复杂度 。
369. P6936 [ICPC2017 WF] Scenery
很神奇的题,感觉还没完全搞懂。
考虑对于一个区间集合,设其最晚开始的完成时间为 ,其最小区间左端点为 ,那么 这个区间可以被标记成 forbidden,意思是这个区间不能开始拍摄任何照片,否则这个集合的要求就没法满足(只考虑拍摄时间 )。
所以我们的算法流程就是,从大到小枚举集合区间最小左端点,然后考虑所有可能的右端点,求出其最晚的开始时间,然后把一些区间设置为 forbidden。
时间复杂度 。
370. POJ1322 Chocolate
考虑答案的 EGF,就是 。
二项式定理展开,得答案为 。
最后答案还要乘上一些系数。
371. P10400 『STA - R5』消失的计算机
很有趣的造计算机题。
372. NC15254 白兔的***难
单位根反演:
发现这是一个 IDFT 的形式,并且 还是 的幂,所以直接 IDFT 即可。
373. NC18393 计数
套路单位根反演。
套矩阵树定理算生成树边权之积的和即可。复杂度 。
374. P5401 [CTS2019] 珍珠
题意等价于出现偶数次的变量至少有 个。
二项式反演,设 为钦定 个变量出现偶数次的方案数,那么:
加法卷积即可。反演回去减法卷积即可。
时间复杂度 。
375. CF891E Lust
首先一个不容易的观察:答案等于 。重点关注后面那坨东西。
注意到 只和 有关。设 ,那么这个东西等于 。可以 求出 ,然后就做完了。
376. [ABC241Ex] Card Deck Score
答案即为:
考虑生成函数,设 。那么答案即为 。
考虑 。分子可以 枚举乘了哪一项,这样可以知道分母需要贡献 的多少次方。我们重点关注分母。设现在要求分母的 次项。
有一个常见套路是设 。因为 所以可以列出 个关于 的方程,可以高斯消元求解。
那么 。
总时间复杂度 。
377. [ABC318Ex] Count Strong Test Cases
首先做一些初步的观察:A 和 B 的解法是对称的,所以 A 对的方案数等于 B 对的方案数。同时若 A 和 B 同时对则每个置换环环长为 ,方案数为 。
所以,若设 A 对的方案数为 ,那么答案为 。所以转化为算 。
A 对当且仅当每个置换环的最大边刚好是编号最小的点的出边。设确定 后环长分别为 ,那么安排边权的方案数为 ,其中 可以放到最后乘。
那么设环的 EGF 为 ,有:
其中 为长度为 的圆排列方案数。
设答案的 EGF 为 ,有标号的组合对象拼接,可得:
那么 。
时间复杂度 。
378. CF1007B Pave the Parallelepiped
容斥太复杂了,考虑不重不漏计数。
把所有数按是否为 的因数、是否为 的因数、是否为 的因数分类,然后再从每个集合中选数即可。
需要乘一个在大小为 的集合中选 个数的方案数 。
379. CF1028E Restore Array
憨憨构造。
首先若所有数都相等就特判,不是全 就不行。
否则设 最大值为 ,那么一定能找到一个位置 使得 。将它旋转到 ,然后构造 就做一个后缀和即可。
380. CF478E Wavy numbers
枚举前 位和后 位,meet-in-the-middle 即可。
381. P4723 【模板】常系数齐次线性递推
考虑构造矩阵 ,其中 ,,其余位置为 。那么:
的特征多项式为 。
设 ,那么 。又因为由 Cayley-Hamilton 定理得 ,所以 。
设 ,列向量 。那么:
于是剩下的问题是求 ,也就是 。直接多项式快速幂即可,每次次数超过 了就对 取模。
时间复杂度 。
382. Gym100341C AVL Trees
考虑朴素 dp,设 为高度为 ,结点数为 的树个数,有:
初值有 。
设 ,那么有:
因为 的次数为 ,所以可以代入 求点值,最后再代入求 单点的值。
时间复杂度 。
383. HDU7057 Buying Snacks
朴素 dp,设 为考虑了前 种零食,花了 元。转移式为:
设 ,有:
矩阵快速幂即可,时间复杂度 。
384. CF1326F2 Wise Men (Hard Version)
考虑子集反演,钦定 串中一些位置是 ,其余任意。
那么最后做一次类似逆高维前缀和即可。
考虑把一个人的排列分成极长的认识段,那么注意到段长集合相同的 串,方案数也相同。
所以我们先 dp 求出 表示以第 个人结尾,以 中的集合作为点的链的个数,进而求出 表示 且以 中的集合作为点的链的个数。
然后我们枚举 的划分,边递归下去边做 FWT 点乘,最后因为只用得到 处的值所以直接 朴素计算即可。
385. CF865G Flowers and Chocolate
设 , 为 的方案数。显然 满足线性递推,若往右平移 位(设 ),就是一个满足前 项只有一项有值的线性递推,设其特征多项式为 。
可以写出答案:
多项式快速幂即可。多项式部分可以使用朴素的 实现。
386. P4199 万径人踪灭
不连续的限制是好处理的,最后答案减掉不回文的子串个数即可。
考虑若求出沿某条线或某个格子为轴,相等的字符数量 ,那么这个轴的贡献为 。
直接 FFT 或 NTT 求 即可。
387. P3784 [SDOI2017] 遗忘的集合
考虑生成函数,有:
两边取对数,有:
对 求 后再从小到大看 在不在 中即可。
388. CF335F Buy One, Get One Free
神仙反悔贪心。
考虑先把相同的物品压成一段。考虑一段物品时,求出可以白嫖的物品个数 和必须买的物品个数 。再用一个堆把所有白嫖的物品存下来。
每次把堆顶拿出来,设为 ,设当前物品价格为 。
- 若 可以买 然后白嫖两个 ;
- 否则买 ,并且加入反悔物品 。
389. P5447 [THUPC2018] 赛艇
相当于是做二维差卷积。
但是不会做二维卷积怎么办!发现可以把他压成一维的,然后新坐标变成 ,然后做完了。
390. P6049 燔祭
显然求出 的答案,插值即可。
设 为 时答案的 EGF,设 。
那么 时相当于是 。
利用 的 递推的方法可以 计算出 。总时间复杂度 。
391. P5850 calc加强版
设 ,答案即为 。
看到乘法直接考虑取 ,有 。
若求出 就可以直接 回去求出 。
我们现在要对于 ,求出 。
考虑这玩意的 EGF:
求出分母和分子前 项系数后分子卷上分母的逆即可。
注意到分子和分母可以提出一个 的公因式,然后分母的零次项就不为 了。
时间复杂度 。
392. P5162 WD与积木
考虑分别把总层数和总方案数求出来。
一层的 EGF 是 。
总方案数的 EGF 是 。
总层数的 EGF 是 。
求逆即可。时间复杂度 。
393. P10532 [XJTUPC2024] 筛法
不难发现每个数对恰好被统计一次,所以答案就是 。
394. CF1965F Conference
考虑题目可以看成天和人的匹配,因此判断单个日期区间 可以考虑 Hall 定理,设 为在 这些天有空的人的数量,定义 合法当且仅当 ,那么 合法当且仅当 , 合法。
猜测只用 check 形成一段区间的 ,但是会被下面的数据叉掉:
3 1 3 2 2 2 2
对于 ,只有 不合法。
因此考虑对初始的线段进行一些处理。发现对于两条线段 和 (其中 ),把它们换成 不影响结果(特别地,若 则相当于删去 这条线段)。这部分实现可以扫描线,枚举 ,把最小且 的右端点 和 形成的线段 加入。
处理后每个人的线段的左端点互不相同,这时候就只用 check 形成一段区间的 了,因为若 且 使得 都不属于 ,那么加入 后 仍然满足,因为每加一个数 至多增加 。
所以此时不合法区间满足单调性,即若 不合法,那么 都不合法。
所以可以双指针求出,对于每个 最大的 ,使得 合法( 不合法)。
最后差分统计一下即可。
时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2023-05-02 AtCoder Regular Contest 119 F AtCoder Express 3
2023-05-02 AtCoder Regular Contest 119 D Grid Repainting 3
2023-05-02 AtCoder Regular Contest 117 F Gateau