模拟赛杂题
模拟赛杂题
18th D
我认为较长时间应当可以独立完成。比较综合的计数题。
考虑一个简化的问题,如何计数一个序列的本质不同子序列。
考虑模拟子序列匹配的过程,每一位字符都找到最近的可以匹配的进行匹配
这告诉我们,如果对于两个字符
可以考虑一个
则设
可以
那么扩展到这里,我们考虑每个元素的消失时间
也就是必须有
那么还有中间这时候已经删空,那么我们保留其中一个,让它继续存活,不妨钦定保留靠后的一个,也就是钦定
所以我们需要要求存在
转化一下描述,就是:
这东西保证了子序列匹配过程中的唯一解,所以是充分的(很直觉显然)
继续转化为一个更简洁的描述,方便计数,就有:
考虑直接区间 dp,设
至于对于多个取到最值的点,我们钦定为最小的一个进行划分(
那么就有:
可以通过前缀和优化到
考虑到本质不同的
再设
则答案就是
19th D
同 P4352
感觉很自然的,主要是场上没看这题
首先在足够多次正着和反着操作后所有值会变成一样,每次操作不会增大相邻两个元素的高度差,合并的时刻至多
首先合并相同值,然后就可以通过判断左右侧的值判断左侧操作/右侧操作当前段是否会增高,不妨设这个为
然后考虑第
我们将这个时刻存入优先队列,取出时间最小的时刻,合并两个段,并且重构两侧关系(
至于
同时由于最大有效时刻不超过 queue
替代优先队列,时间复杂度就线性了(使用链表的话)
这个题实现细节比较多
21th D
这一周唯一在考场想到正解的D,这里的想到指的是完整思路,虽然并没有写
首先考虑更项减损数,那么就会有
考虑对于每个质因子的贡献,设当前统计质因子
前面那个可以
问题化为高速计算
不妨按照
-
处理
我们令
,令 ,这样 与 就互质了,相当于求。由于
,分讨有:-
,这时候左右两侧都是零,可以直接算 -
,这时候右侧是零,需要让左侧取到零,可以枚举 ,另一半可以直接计算这样的数字个数 -
,这时候原式可以等效为我们只需要对于每个
枚举 ,开桶加入贡献,然后对于每个 枚举 计算贡献即可。
-
-
,则 ,显然由于 ,则将 写为 又有:由于
所以右侧为零,因此只需要判断左侧是否为零即可。
至此本题完结。
复杂度应当是
前面是预处理复杂度。独立补题时常 大概100min
若痕迹都不曾亲眼见过
若连平凡都显得像个传说
还留什么时间惋惜惶惑
——《夏虫》
22th C
定义
,表示按位异或,求所有序列 的最小异或生成树边权和。
同 BZOJ4770
考虑 Boruvka 在 Trie 上的体现,其实就是一个逆序过程。如果 Trie 上一个节点
所以我们考虑设一个
那么就会有:
分别是所有点都在左侧/右侧或者左边
考虑
注意到我们当前给所有的点分成了左右两个部分,分别考虑左右两个部分的左右儿子,其实这个问题还是可以等价描述为 Trie 上,有:
- 四个儿子都有值,此时左左和右左,以及左右和右右形成了子问题
- 仅有一个儿子没有值,此时我们可以知道另一半的一个儿子是永远不会走的,还是一个子问题
- 两边都有一个儿子没有值,那么走法是固定的
既然我们并不方便计算出每一类权值出现了多少次,不妨设
-
四个儿子都有值
此时分左左和右左,左右和右右两个子问题,将其方案数乘起来即可。
譬如我们枚举左左和右左分别有
个, ,那么这个方案数就是 -
仅有一个儿子没有值或者两个儿子没有值
此时我们走法是确定的。
分类讨论递归即可计算。注意需要乘上组合数的系数。
考场上的失误主要是有了一个思路便急于求成,一直往下推,并未停下看看,可能你已经得到的结论,会存在更明显的,更快捷的,更简单的正解的路。
得到重要结论后不妨回头看看,寻找更简单的子问题划分方式,这很重要,也导致了我并未做出此题*
22th D
给定序列
,求所有 的好序列 , 在其中出现次数之和(即有多少个子区间与 相同) 定义序列
是好序列,当且仅当满足:
的每个组成元素是 的正整数 - 不存在子区间
是一个 的排列。
考虑容斥,如果没有好序列的限制,那么有枚举
md经典结论不知道
那么我们分类讨论求 B不是好序列的匹配次数和:
-
是好序列则
一定是好序列,所以答案就是上面那个式子。 -
含重复元素这说明如果
即使是好序列,那么这个排列也不会跨过 ,考虑求将 接入一个 的序列后仍然不是好序列的方案数。记
为 无重复元素的最大 , 为 无重复元素的最小 ,则我们可以枚举拼接序列的长度,例如用一个长为 的序列接在 头部,长为 的序列接在 尾部。所以可以设
为填完了 ,最后极大的 个元素两两不同的非好序列个数,分别初始化 得到接在头部的方案数, 得到接在尾部的方案数,答案就是一个长度的卷积形式。这个
是容易的:可以后缀和优化到
-
不含重复元素由对称性可知
有 个等价形式,所以不妨计算所有非好序列中长度为 的元素两两不同的段个数之和,除掉这个数就可以得到答案了。不妨设
为填完了 ,最后极大的 个元素两两不同的非好序列个数, 定义类似,但是这样的序列中 的段的个数之和同样可以后缀和优化,答案为
感觉后面好套路啊,被第一步卡住了。。。后面完全会的。
23th D
考虑先对树进行黑白染色,然后就变成了交换相邻两个点的颜色。
你考虑一条边的贡献,它显然至少需要操作断掉这条边后两棵子树里黑色点个数差次(换一个黑点过去白点过来)。将这个过程进行贪心或者是dp都可以说明取到这个下界。
那么我们不妨设
现在可以
然后考虑简化
这个表达,显然可以将
令
拿掉常数
有:
如何计算它,一个自然的想法是拆掉绝对值式,也就是有:
我们设
则有:
而
而我们考虑若能够
显然我们可以
注意到
有
考虑
这部分的方案数显然是
所以
那么就做完了。
参考代码 code
没做出来竟然是因为没看这个题,但是推导是耗时的。基本独立补题时常 2h,推导1h,写代码20min左右,调试40min左右
计算能力需要加强
24th D
有一个zz告诉我这题点分树2log,而我不够坚定直接掐死了我想到的分块思路。
补题知道用分块后独立完成,大约用时 95 min。
5e4 直接上根号log
考虑到用
我们考虑将当前新加入点单开一个块,当块长与普通块长度相同后暴力重构。
将点按照
如果是对新加入的点(新块)进行查询和修改,可以直接子树内暴力,而如果是对老点进行查找,为了方便判断子树关系,我们可以让新加入的点的
总操作复杂度
25th D
差分是可以想到的,但是后面的差分轻儿子和重儿子贡献是第一次见。
树上统计问题往往可以使用差分简化
实现难度较高,大概写了半小时,调了大半小时,从开写到过用了 80min 左右。
设询问答案为
子树内与子树外距离的转化
单个点的答案容易点分树求解,考虑
利用重链剖分维护整个子树贡献以及轻儿子贡献(类似动态dp),那么我们只需要计算
设
我们可以利用函数式编程,离线下所有的
总复杂度
亲爱的,感谢这世界始终有你。
让我能,去发现世界的偶然与惊奇
如果那天我们,都不曾让心与心相遇
怎么会有,曼妙的风景
——《亲爱的》
29th C
相当有意思的题目,也是我不会的题目
首先必然是给
考虑答案集合的上三角基,也就是标准基,有将其排序后按照
这启发我们根据
再将这个线性基化为标准基,则我们将
考虑这样的一对限制
同时对于答案求算,我们都算标准基
这给出了如下信息:
- 答案线性基里,
必须取 这一位 - 对于
低于最高位且为零的位置 ,也就是 ,这说明我们选择的答案标准基里相应的位置最终异或时这个位必须是零,那么告诉我们参与这个值异或的答案基位置最高位都不能是 。 - 对于
,这说明不参与这个值答案异或的答案基位置最高位不能够是
考虑这是否充分(这显然必要)
一个从低到高确定线性基的过程,当我们确定答案基第
所以,根据
那么有 dp:设
考虑转移:
- 令转移系数
当 时 ,否则
最终答案是考虑所有
29th-D Jewels
考虑
- 给已经拿过的再拿一个
- 新开一个
,删掉一个之前的 - 连拿三个新的,删掉之前一个
考虑到每一类必然是递减拿,且最少拿两个,所以给最大值和次大值取平均是不影响答案的。
使用三个优先队列
维护所有的物品 维护所有的未拿的连续三个 维护已经拿了的可以删的元素
每次有:
- 若
堆顶的元素从未取出过,说明这个无法参与,那么有如下决策:- 连拿三个新的,删掉之前的一个
- 拿一个已经拿过的
- 扔掉之前的一个
,连拿两个堆顶元素(至少两个)
- 连拿三个新的,删掉之前的一个
- 此刻,注意到每类元素最大值和次大值相同,那么当前堆里面已经取出的元素(包含它自己)每一类至少有两个,全拿了一定最优
所以所谓的 “删掉之前的一个
32nd B
变进制数很有意思啊
定义变进制数
其很有用,例如这个问题:给定
这个就必须得很精细了。
取模,根据短除法的一些性质亦或者变进制数的知识,我们可以知道若将
那么这个值就可以直接
通过递推手段还可以
32nd D
先跑一次 dfs,然后做轮换,将
然后考虑称呼一轮遍历为从根结点开始走,又走回根节点的过程。
并且在排好序后,跑一次欧拉序(入出都算,入算自己,出算父亲,也就是出点)
那么每次的走过的节点按顺序拍成的序列就是欧拉序的一个子序列(也就是按欧拉序,可访问就访问)
考虑每个
也就是:
- 如果一条边被访问,则下一轮必然访问
- 如果一个点被访问,下一次必然从
开始逐个访问
那么也就是相当于我们可以看一个边(欧拉序,分向上向下,或许可以用出点替代?注意
极大:显然 轮之后由于 ,所以就开始循环了,这时候就可以根据欧拉序直接求出答案。 未开始循环:考虑二分轮数 ,然后查找该轮这个值
需要注意到支持修改,那么也就是维护一个:
- 支持子树
- 支持查询
两个维度的限制,考虑分块。
首先将原树的
然后考虑二分轮数的查询,可以通过
接着还有查找答案这一步,显然是
考虑修改,由于
假设
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!