2025年11月杭州集训记
写题目太累了,以后不写了。
注:
- 考虑到大片代码可能影响阅读体验,会将代码整合。您可以在 luogu.me 或 luogu 主站 查看。(集训完了再传)
- 不会的或是待补的以 * 标注。
- 难度非常主观,仅供娱乐。目测难度包括但不限于:做不出来就是紫黑,场上做出来就是绿,场上没切但是能补就是蓝等。
- 好像联考的 rank 都无法统计。
- 联考评分。以后不写难度了。
11.07 模拟赛
这场是在前往杭州当天的模拟赛,在第二天做了,仅补题。
A 游走
Link。
素质怎么这么低,出原题。同 10.14 模拟赛 T1。
B 区国的魔法
Link。
建图,对于每个 \(i\) 连接边 \((a_i,b_i)\),则题目等价于给边定向,要求入度至少是 \(1\) 的点至少有 \(k\) 个。
由于 \(a,b\) 都是排列,则每个点的度数都是 \(2\),也就是一堆环。
先考虑单个环怎么 DP,画一下就会发现环上定向之后度数的序列一点形如 \(\{1,2,1,1,0,2,0,1,1,2,0\}\) 这样,说人话就是忽略 \(1\),一定是 \(0\) 和 \(2\) 交替出现,由于你还要计数非零度点的个数,设计 \(f_{i,j,0/2}\) 就是到 \(i\) 这个点,填了 \(j\) 个非零度点,上一个非 \(1\) 填的什么。由于 \(0\) 和 \(2\) 对称,可以钦定第一个填的一定是 \(0\),最后乘二。
合并直接做就行了。
时间复杂度 \(O(n^2)\)。
最大独立集问题*
???
树*
???
11.08 复杂容斥原理
全程离线。
只会一题,还是 ctj(汗)。
重要问题:二项式反演和容斥的区别在哪?钦定和至少有什么区别?
- P5400 CTS2019 随机立方体 二项式反演。
- 主旋律 ???不会
11.09 模拟赛
\(100+100+0+0=200\),T4 freopen 打成 froepen 怒挂 \(8\) 分,爆笑。
A 世末积雨云
Link。
普及组难度 DP。不写了。
B 纸花
Link。
原题 P13524。
以下变量以原题为准。
考虑已知一个排列 \(p\) 怎么推出 \(c\),显然是维护差分标记 \(t\),对于 \(p_i,p_{i+1}\),给 \(t_{\min(p_i,p_{i+1})}\gets t_{\min(p_i,p_{i+1})}+1\) 以及 \(t_{\max(p_i,p_{i+1})}\gets t_{\max(p_i,p_{i+1})}-1\)。
显然可以从 \(c\) 简单推出 \(t\)。下面我们只讨论 \(i\in [2,n-1]\)。由于每个点只会被操作两次(到达一次,出发一次),则只可能存在 \(t_i\in \{-2,0,2\}\),且 \(\sum t_i=0\),即 \(-2\) 的个数 与 \(2\) 的个数相等。
考虑若 \(t_i=-2\),则两次操作这个点,\(i\) 都是作为终点,即 \(i\) 的左右两侧相邻的数都比 \(i\) 小;同理 \(t_i=2\) 表示两侧都比 \(i\) 大;\(t_i=0\) 表示一侧比 \(i\) 大,一侧比 \(i\) 小。
然后你会发现由于 \(c_i\) 为正,\(t_i\) 的每一个前缀和(从 \(2\) 开始)都是非负,所以第一个 \(2\) 一定在第一个 \(-2\) 之前,第二个 \(2\) 一定在第二个 \(-2\) 之前……然后就有一个很好的构造,把 \(1\) 放第一个,再放第一个 \(t_i=-2\) 的 \(i\),放第一个 \(t_i=2\) 的 \(i\),放第二个 \(t_i=-2\) 的 \(i\),以此类推,不难发现一定满足要求。
什么?你问 \(t_i=0\) 怎么办?在任意两个数 \(p_i,p_{i+1}\) 之间插 \([p_i,p_{i+1}]\) 里面(或 \([p_{i+1},p_i]\) 里面)的数就行。随便用 set 搞一下即可。
代码里还缝了一个 checker。
时间复杂度 \(O(n\log n)\)。
C 人生来就形只影单*
Link。
矩阵乘法快速幂,不会。
D 参考答案:略*
在调了在调了。
11.11 模拟赛
\(100+72+0+12=184\),倒闭了。T2 \(\sum k\log\sum k\) 被卡了。
A 破译系统
Link。
诈骗题。先考虑一下条件的等号左右两边是什么。
当全局的 \(\min\) 不为 \(0\) 时,左边显然为 \(0\),右边也显然为 \(0\),答案为 \(2^{n-1}\)。
当全局的 \(\min\) 为 \(0\) 时,设左右两边为 \(x\),则每个序列的 \(\min\) 需要存在 \(0,1,2,\dots,x-1\),\(\operatorname{mex}\) 不能存在 \(0,1,2,\dots,x-1\) 并且还要存在 \(x\)。\(x>1\) 时结合 \(\min\) 存在 \(1\) 和 \(\operatorname{mex}\) 不存在 \(0\) 即可导出矛盾,所以 \(x=1\)。分析一下条件可以改写为每一段都存在 \(0\),并且存在一段没有 \(1\)。设 \(f_{i,0/1}\) 表示 \(i\) 结尾,是否以及有了一段没有 \(1\)。直接做即可。
时间复杂度 \(O(n)\)。
B 单源最短路
Link。
题目的做法其实就是题目名字。
考虑 dij,当使用一条边到达点 \(u\) 时,看 \(u\) 的所有未删除的出边,若这条出边对于来的边可达,松弛这条边并从原图中删除。
由 dij 的算法过程正确性显然,下面证明时间复杂度。
考虑一条边,它有 \(k_i\) 个不可达的前驱,最坏情况就是这 \(k_i\) 条边都尝试了这一条边并发现不行,最多 \(k_i+1\) 次尝试即可松弛,均摊就是 \(O(\sum k)\) 的。故时间复杂度 \(O(m\log m+\sum k)\)。
需要 \(O(1)\) 删边以及不带 \(\log\) 判断一条边是否被不可达。前者链星即可,后者因为每一条边只用检查一遍它的后继,可以双指针,都是单次 \(O(1)\),均摊 \(O(\sum k)\) 的。
C 重构*
Link。
原题 P13524。
D 区间移动*
???
11.12 分治
不给链接的默认洛谷能搜到(包括 RMJ)
- CF1442D Sum 分治背包
- 计蒜客-A1108 百度地图的实时路况 线段树分治
- Non-boring sequences CDQ 分治
- Another Longest Increasing Subsequence Problem CDQ 分治
- P4655 Building Bridges CDQ 分治优化斜率 DP
- P2617 Dynamic Rankings P1527 矩阵乘法 P4175 网络管理 P3332 K大数查询 同一个问题从序列到矩阵到树到区间加,太变态了吧,全部都是整体二分做的
- P4721 分治卷积
11.14 模拟赛
\(0+100+20+0=120\),做完 T2 就 all in T1 了,策略大失败。
实际上 T1 与 T2 互换位置。
A 蛇
Link。
原题题解写的挺清楚的,太长不写了(懒)。
B 白日窃贼
Link。
显然每次只能交换对下标 \(k\) 同余的集合,于是对于每个 \(i\),计算 \(|a_i-i|\) 的值,也就是这个点要走的距离,不难发现令 \(g=\gcd(|i-a_i|)\),有解当且仅当 \(k|g\) 。然后经典结论(打表),\(\max\{d(i)\}\le127\),于是暴力做即可。
C 树形分流器
Link。
最优策略不会证。
总之发现策略一致之后拆式子会发现这个式子的值只与子树的 \(\sum a_i\) 和 \(siz_i\) 有关,任何数据结构都可以做。
D 饭语*
???
11.15 图论和连通性问题
全是神仙题,而且补题怎么就一个晚上。
就做了一题(哭)
- P14151 无念无想,泡影断灭 删边最短路板子
11.16 模拟赛
\(40+0+0+0=40\),赛时 All in T1,结果做法和正解毫不沾边。
大失败,明明暴力分给了一车(至少赛时得分的两倍),而且 T2 完全可做,要反思一下比赛策略了。
A 传送门
Link。
不会做构造。
题解说的很清楚,只要观察到 3 1 4 2 可以改一次奇偶性就行。
感觉我真的很不会构造啊,容易被绕进去。
B 岁月
Link。
感觉完全比 T1 可做,要是换个位置估计能做出来。
lzx 讲的好好!
谔谔,题解好难写,摆一下。
C 流星雨*
???
D 安全*
???
11.18 模拟赛
\(100+60+0+0=160\),T3 freopen 写错怒挂 \(15\),简直唐飞了。
A 朝花夕拾
Link。
典。
考虑刻画染色的过程,设排列 \(p\) 为染色的顺序,则原过程可以改为:遍历 \(p_i\) 从 \(1\) 到 \(n\),若 \(p_i\) 的所有相邻点都被遍历则不计入答案,否则答案 \(+1\)。由期望的线性性可知不会算重漏(改成计数排列而不是期望就会了)。然后就转成了一个计数问题,\(p_i\) 的所有相邻点都被遍历等价于 \(p_i\) 的 \(d_{p_i}\) 个邻居都在前面出现了(\(d_i\) 为 \(i\) 的度数),则计数满足这个条件的排列数,就是:
组合意义就是你考虑在所有位置里面选 \(d_i+1\) 个给 \(i\) 个 \(d_i\) 个邻点,其中 \(i\) 必须是最后一个,然后剩下的随便排。
其实考场上犯糖了,到这里就直接组合数了,实际上这个式子还可以化简:
答案就是:
时间复杂度 \(O(n+m)\)。
B 平行线
Link。
考虑记 \(b_i\) 表示 \(i\) 前面比它大的,则最终目标就是把 \(b_i\) 全部变成 \(0\),对于每组的第一次排序,就是把前 \(k\) 个 \(b_i\) 推平成 \(0\),然后再往后走,当区间向左移动一位时,会先扔掉这个区间里面最小的数,然后加入了一个数,不难发现加入前这个区间聚集了目前最大的 \(k-1\) 个数。所以把 \(i\) 加入之后对应的 \(b\) 会减少 \(\min(k-1,b_i)\),因为他前面比它大的一定全部都在里面(若 \(b_i>k-1\) 当然无法全部在),而我每次最多只会影响一个 \(b\),所以直接计算贡献 \(\left\lceil\frac{b_i}{k-1}\right\rceil\)。然后因为每轮的第一次操作所有人公用,所以判一下即可。时间复杂度 \(O(n\log n)\)。
C 孤独之中神的祝福
Link。
神仙题,应该是我的能力极限了。
再次感谢 lzx 讲的很清楚!可爱小魅魔ruaruarua
考虑改写和式,记 \(g(x)\) 的前缀和为 \(G(x)\),则 \(\sum_{xy\le n}=g(x)a_y=\sum_{i=1}^{n}a_iG(\left\lfloor\frac{n}{i}\right\rfloor)\),经典数论分块,\(\left\lfloor\frac{n}{i}\right\rfloor\) 的用到的值只有 \(O(\sqrt{n})\) 个,考虑一次修改 \(p^k\) 对于 \(G(i)\) 的贡献,记修改的增量 \(\Delta\),则贡献为 $$\Delta\sum_{p\nmid x,x\times p^k\le i}g(x)$$
然后你需要计算后面这坨和式。考虑设 $$S(x)=\sum_{p\nmid x,x\le i}g(x)$$
则所求即 \(\Delta S(\left\lfloor\frac{i}{p^k}\right\rfloor)\)。为什么这么设呢,因为需要的 \(x\) 满足 \(\left\lfloor\frac{\left\lfloor\frac{n}{j}\right\rfloor}{p^k}\right\rfloor=\left\lfloor\frac{n}{j\times p^k}\right\rfloor\) 的数论分块形式,还是 \(O(\sqrt{n})\) 的,就是很神奇。关于 \(S(x)\) 的计算,可以考虑容斥,用总的减去可整除的,有:
考虑枚举 \(x\) 的质因数分解里 \(p\) 的次数,有:
又由于 \(g\) 为积性函数,有:
神奇!我们通过枚举次数,将整除条件化为了不整除的条件,进而得到递推式。
然后由于 \(e\) 是 \(O(\log n)\) 级别的,这样就可以做到 \(O(q\sqrt{n}\log n)\) 了,然而还不够,然后这里有一个复杂度我也不会证明的优化,设 \(\left\lfloor\frac{n}{i}\right\rfloor\) 的取值集合从小到大记为 \(b_i\),则我们可以考虑从 \(s(b_i-1)\) 推得 \(s(b_i)\),记 \(r=s(b_i)-s(b_i-1)\),有
别的不考虑,只看 \(S(\left\lfloor\frac{b_i-1}{p^e}\right\rfloor)-S(\left\lfloor\frac{b_i}{p^e}\right\rfloor)\),发现当 \(p^e\) 增大,\(\left\lfloor\frac{b_i}{p^e}\right\rfloor\) 和 \(\left\lfloor\frac{b_i-1}{p^e}\right\rfloor\) 会趋近相同,当它们相同时,后面的一定也相同,直接结束 \(r\) 的计算,这样就被均摊到 \(O(1)\) 了,很神奇啊。反正我不会证。
然后做完了。时间复杂度 \(O(q\sqrt{n})\)。这题还卡常,恶心。
D Back to Basics*
???
11.21 模拟赛
\(0+5+0+0=5\),不是?????
不是???
T1 自造 SPJ 写挂,怒砍 \(100\to 0\)。
A 构造题
Link。
唐诗题目,显然奇偶分开,中间构造 3 2 6 8 4。其它的每两项交换,自己推。
SPJ 挂了的原因:\(2\) 不是质数。
B 等式*
神笔题目,分类讨论即可,但是代码极其恶心。
会补的会补的。
C 水滴*
???
D 打字*
???
11.22 初等数论解题技巧
初等在哪。
数学我哪会啊。离线先。
最好还是先补知识点吧。
To do list:

浙公网安备 33010602011771号