2023-5-21 #55 渐行渐远迷路的我 看向了光年外璀璨星河
——清风疾行《幻想生物》
358 P5897 [IOI2013]wombats
线段树维护矩阵乘法,注意到有决策单调性,复杂度 ,但是空间过大,我们递归到一个较小的区间时暴力计算即可,若阈值为 ,空间会整体除 。
359 P8275 [USACO22OPEN] 262144 Revisited P
先考虑一个序列的问题:
答案显然不超过最大值 加 ,我们不妨先进行 所有数的操作,进行完后能得到一个相邻两个至少一个 的序列(假设长为 ),答案即 。
不会,有没有人来教育我一下!
咕咕咕。
360 P6277 [USACO20OPEN]Circus P
注意到一定能将状态变换为所有奶牛都在 ,因此可以用一个 排列刻画状态,只需考虑这些排列之间的等价关系。
等价关系一定是每次换一对奶牛,而换奶牛不会受编号影响,我们只需求出位置的等价类,答案即 ( 为第 个等价类大小)。
考虑如何判断两头奶牛 在同一等价类,我们提取出 到 的一条路径,若路径上能空出一个分叉来等待,我们一定能交换这两头奶牛。
我们只需考虑中间全为二度点的链,注意到两端能交换等价于链长小于 ,于是两个点能交换等价于中间不存在长度大于等于 的全为二度点的链。
从大到小枚举 ,于是只需处理连通块的合并,我们动态地维护所有极长不合法链,对于每个 暴力枚举每个不合法链讨论其贡献即可,这里是均摊线性的。
复杂度 。
361 CF1832F Zombies
场上猜的是每次要么取 最小的一些,要么取 最大的一些,发现优化不了。
结论:所有门按照中点下标排序,选择同一个电网的一定是一段区间(证明可以考察函数图像)。
于是 wqs 二分,可能作为电网的区间只有 个,每次 dp 一下即可。
362 CF1808E3 Minibuses on Venus (hard version)
场上只会 E2,十分抽象,可能是嫌麻烦吧。
枚举 ,答案是所有存在一个 的 的长为 ,和为 (模 )序列数量。
当 为奇数时,合法 恰好一个:
对 求和:
当 为偶数时,合法 有两个,差为 ,类似地列出式子:
把 拿出来推一下:
注意到两条只能成立一条,因此可以写成 。
求和有:
复杂度 。
363 ARC160F Count Sorted Arrays
为啥都会????我觉得很难啊。
根据排序网络经典结论,只需对所有 01 序列分别考察排序后的结果。我们将排列双射成一个 01 序列组,每一项都是后一项的子集,其为 阶 hypercube 从 到 的一条路径。
一个排列能被还原当且仅当其路径上所有 01 序列都能被还原,我们动态维护还不能被还原的 01 序列,每次加入操作时检查并更新答案。更新答案需要维护 hypercube 每个位置到 与 的路径数量,容易在 内计算。
364 loj#3607. 「PA 2021」Wystawa
这能做?????????????然而 hzr 的确是会做的,脚盆队长实力强劲,欢迎大家加入粉丝群 706094232。
做点讨论将题意转化为 , 中不超过 个数变为 ,具体地:
- 若 的数不少于 ,我们每次一定操作这种数,只需将其余 赋值为 ;
- 否则,我们一定把这些数操作完,然后 swap(a,b) 变为类似的问题。
二分答案,直接列出 dp, 表示前 个位置, 次操作的答案,容易发现其有凸性,于是考虑 slope trick,将转移写出来:
每次转移完成后将 的 dp 值删掉并更新答案。
差分数组不降,其等价于差分数组插入 ,整体平移容易维护,对 chkmax 只需 popback,使用 set 维护即可,复杂度 。
365 ARC159E Difference Sum Query
将问题结构建立出来,其事实上是在一个二叉搜索树上找一个点,每个结点恰好对应一个值。注意到答案就是虚树大小,我们类似线段树定位一下区间就能算出来了。
复杂度 。
366 ARC138E Decreasing Subsequence
挺不错的题,zyf 之前搬到模拟赛过。
我们考察所有 不为零的 构成的一张图,那么图由编号递减的链组成。
我们考察上升序列 ,注意到 ,于是有 ,且序列对称部分有边,因此这些边一定分布在 条不同的链上。
于是就能做了,枚举链上左侧点数 ,右侧点数 ,分配方案数为第二类斯特林数,非这些链上的点任意分配成链方案数为贝尔数,答案即:
卷积即可做到 ,平方也可通过。
367 Yuhao Du Contest 11 M Minimum Element Problem
ZR 考过,补一下,还是挺有意思的。
类似 CF104008J Permutation Puzzle,注意到只需关心填数的上下界,内部的数一定能取到,差分后问题变为统计 的分布(分别对应下界与上界)。
较简单,注意到在一颗二叉树上,插入一个排名固定的结点方案始终唯一,因此子树外的方案数始终为大小为 的二叉树数量,而子树内部并不完全一致,因为左子树大小不能超过 ,右子树大小不能超过 ,因此要分别算出方案做卷积。
的计算需要发现一个关键性质—— 左右侧的计数是独立的,我们只有对其子树大小的限制,求出两侧答案后卷积即可得到答案。以左侧为例,此时问题变为计数点数为 ,根的连续右儿子数量为 的二叉树数量,这个东西叫卡特兰数的 次卷积,做法大概是:
使用兄弟儿子表示法与括号序刻画结构,再写出格路,注意我们只要求这个序列有 个连续括号作为结尾,使用折线法 计算即可。
复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下