校内高质量模拟赛选做
「2020-02-14 省选模拟赛」同桌与室友 (mate)
- 注意到每个人最多连出两条边,因此形成的图要么是环,要么是链。链分两端颜色是否相同讨论即可。
「2020-02-14 省选模拟赛」传送 (teleport)
-
有显然的差分约束模型。实际上 dp 可以求出每个点的合法区间,最后若区间非空即有解。
-
注意到每花费 的代价即可使答案区间左右各扩大 ,因此花费可简单计算。
「2020-02-14 省选模拟赛」生成树 (tree)
- 将绿边权值设为 ,蓝边权值设为 ,红边权值设为 ,矩阵树定理之后的形式是关于 的二元多项式。答案即为系数的二维前缀和,二元插值即可求出。
「2020-02-17 省选模拟赛」序列 (seq)
- 倒序考虑 的组成。最后加入的数对可以通过分奇偶性区间极值得出。这样可以把原区间分为三个子区间,递归下去即可。子区间的数对必须在当前区间的数对之前选择,这样可以得到数对之间的偏序关系,求字典序最小的拓扑序即可。
「2020-02-17 省选模拟赛」进制 (hex)
-
第一问,注意到十六进制数的长度不超过 ,预处理每种长度的数在序列中占多少长度可以判断位数。之后通过数位之间的整除、取模即可求得。
-
第二问,求出第一问后相当于小于某个数的所有数做数位统计,数位 dp 即可。
「2020-02-17 省选模拟赛」矩阵 (matrix)
-
设 表示有 行 列,其中每行都有涂黑的方案数。
-
-
考虑两种转移:
-
新增一列。;
-
新增一列,以及若干行。考虑原来某列第一个位置的上一个,和最后位置的下一个位置,和新增的 个位置一共形成 个位置。那么相当于在 个位置中选出 个位置填数。 。转移是卷积的形式,NTT 即可。
-
「2020-02-18 省选模拟赛」小 D 的奶牛 (cows)
- 先考虑 做法。记录每个点连出的点集,状压 dp 每个集合是否可行。
- 折半搜索。前一半需要统计子集中有多少个合法,可以 FWT;在后半搜索的时候直接求出对应的集合最大能是多少。
[「2020-02-21 省选模拟赛」遗迹探索 (strings) ]
一个串把中间的 SAD
计入答案后,只有前后缀两个字符有用,我们完全可以把信息压缩成:前缀 A
的出现次数,前缀 AD
的出现次数,后缀 S
的出现次数,后缀 SA
的出现次数。如果不存在单独的 A
,则贡献是好算,注意一些串可能同时存在匹配的前后缀,要去除用的所有串都是同一类的情况。考虑单独的 A
,枚举其被用了几个,把一些长度为 的前/后缀拼成长度为 的前/后缀即可
「2020-02-21 省选模拟赛」基因进化 (reverse)
对于可翻转前缀 ,我们能从其最优答案推出下个可翻转前缀 的最优答案。直接维护这个最优答案,需要支持头插入、尾插入、翻转字符串,使用 hash 二分判断字典序,双端队列维护 hash 值。
「2020-02-21 省选模拟赛」城市破坏 (disconnected)
-
如何判断删去若干边之后,图能否被分成两个连通块?
-
每条边随机一个权值,点权为相邻的边的边权的异或和,满足所有点权为 。若删去的边的边权异或和为 ,则被分成两个连通块;否则不是。
-
枚举删掉的边集,若异或和为 则不连通。
-
关于边权,dfs 树上,非树边随机,树边构造即可。
「2020-02-25 省选模拟赛」小 B 的班级 (class)
如果人的位置确定,点 的父边最多能为 个点对产生贡献,并且显然可以取到上界。那么对所有方案计数只需分别枚举子树内男、女人数即可,直接做是 的。实际上只需要枚举子树内总人数即可。
[「2020-02-25 省选模拟赛」小 B 的环 (loop)]
倍长断环成链,如果相邻字符相同则这两个位置不会同时出现,这样就把字符串分割成若干段独立子串。删除长度为 的串,等价于保留长度为 的串;存在合法的长度为 的串,等价于 ,显然补集转化,不存在合法的长度为 的串,等价于 ,即存在长度为 的 border。求串的所有 border,kmp 即可。
[「2020-02-25 省选模拟赛」小 B 的农场 (farm) ]
分治,求所有跨过中线的答案。以竖中线为例,枚举上边界,线段树维护每个下边界的答案,则中线两边显然分别考虑,且可选长度自上而下构成一个逐渐“缩紧”的形状,用单调栈维护。注意边界。
注意到答案大等于 ,所以只需要横着竖着各分治一次即可。
[「2020-02-28 省选模拟赛」小 B 的棋盘 (chess)]
无穷解当且仅当 ,比较显然。否则前 个点与后 个点至少存在一对匹配点,否则无法增加 个点使对称。枚举匹配点对,即可求出对称中心,暴力判断是否存在匹配点即可。可以排序后双指针优化常数。
[「2020-02-28 省选模拟赛」小 B 的夏令营 (camp)]
等价于相邻两行剩余区间有交。暴力 dp,设 表示考虑前 行,第 行剩余区间为 的方案数,转移枚举上一行所有有交的区间,再乘上剩下 的概率。需要优化状态。设 ,发现 的转移方程可以用 表示,然后再求一个前缀和即可得到 的转移式,可以前缀和优化。
「2020-02-28 省选模拟赛」小 B 的图 (graph)
把询问离线下来排序。当 很充分小时,我们优先选用 的边;随着 增大,我们会选择把一些边替换成 的边。但是两种边使用的集合是不变的——一定是各自子图上最小生成树边。所以先求出 边的最小生成树,枚举每一条 边,维护路径上边权最大值,可以求出替换时的 值。注意到如果两条 边对应路径有交集,那么一定是 小的先替换,并且不会再被替换。所以替换后要在最小生成树上删除,边权赋成负无穷。LCT 维护最小生成树即可。
「2020-03-31 省选模拟赛」积性函数求和 (sum)
算法 1
,Min25 筛板子题。
算法 2
口胡的。
如果可以使用杜教筛求出 的前缀和,那么由于我们只需要其在形如 处的前缀和,一遍杜教筛即可解决问题。感觉很对。
算法 3
搬运官方题解。
所以
带回原式
有两个比较经典的结论
则 和 的前缀和都可以在不超过 的时间复杂度内求出。因此可以预处理前 个值,剩下的暴力做,复杂度分析和杜教筛是一样的。
「2020-03-31 省选模拟赛」游戏 (game)
先手必胜:对手存在一张牌,使得其比先手所有牌都小。
后手必胜:对于自己的每一张牌,都有一张先手的牌比它小。
剩下都是平局。
「2020-03-31 省选模拟赛」子串排列 (permutation)
把询问结点定位到后缀树上,建出虚树贪心。维护每个子树的答案,把所有子结点的答案按照字典序排序后加入,最后再加入当前子树根的串。排序直接暴力排(在这里想了挺久),重儿子长度不会计入,复杂度是对的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?