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(汗)。
重要问题:二项式反演和容斥的区别在哪?钦定和至少有什么区别?

  1. P5400 CTS2019 随机立方体 二项式反演。
  2. 主旋律 ???不会

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)

  1. CF1442D Sum 分治背包
  2. 计蒜客-A1108 百度地图的实时路况 线段树分治
  3. Non-boring sequences CDQ 分治
  4. Another Longest Increasing Subsequence Problem CDQ 分治
  5. P4655 Building Bridges CDQ 分治优化斜率 DP
  6. P2617 Dynamic Rankings P1527 矩阵乘法 P4175 网络管理 P3332 K大数查询 同一个问题从序列到矩阵到树到区间加,太变态了吧,全部都是整体二分做的
  7. 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 图论和连通性问题

全是神仙题,而且补题怎么就一个晚上。
就做了一题(哭)

  1. 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\) 的度数),则计数满足这个条件的排列数,就是:

\[\sum_{i=1}^{n}\binom{n}{d_i+1}d_i!(n-d_i-1)! \]

组合意义就是你考虑在所有位置里面选 \(d_i+1\) 个给 \(i\) 个 \(d_i\) 个邻点,其中 \(i\) 必须是最后一个,然后剩下的随便排。
其实考场上犯糖了,到这里就直接组合数了,实际上这个式子还可以化简:

\[\sum_{i=1}^{n}\binom{n}{d_i+1}d_i!(n-d_i-1)!=\sum_{i=1}^{n}\frac{1}{d_i+1} \]

答案就是:

\[n-\sum_{i=1}^{n}\frac{1}{d_i+1} \]

时间复杂度 \(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)\) 的计算,可以考虑容斥,用总的减去可整除的,有:

\[\begin{aligned} S(x)&=\sum_{p\nmid x,x\le i}g(x)\\ &=G(x)-\sum_{p\mid x,x\le i}g(x) \end{aligned}\]

考虑枚举 \(x\) 的质因数分解里 \(p\) 的次数,有:

\[\begin{aligned} S(x)&=\sum_{p\nmid x,x\le i}g(x)\\ &=G(x)-\sum_{p\mid x,x\le i}g(x)\\ &=G(x)-\sum_{e=1}\sum_{p\nmid x,x\le i}g(x\times p^e) \end{aligned}\]

又由于 \(g\) 为积性函数,有:

\[\begin{aligned} S(x)&=\sum_{p\nmid x,x\le i}g(x)\\ &=G(x)-\sum_{p\mid x,x\le i}g(x)\\ &=G(x)-\sum_{e=1}\sum_{p\nmid x,x\times p^e\le i}g(x\times p^e)\\ &=G(x)-\sum_{e=1}\sum_{p\nmid x,x\le i}g(x)g(p^e)\\ &=G(x)-\sum_{e=1}g(p^e)\sum_{p\nmid x,x\le \left\lfloor\frac{i}{p^e}\right\rfloor}g(x)\\ &=G(x)-\sum_{e=1}g(p^e)S(\left\lfloor\frac{i}{p^e}\right\rfloor) \end{aligned}\]

神奇!我们通过枚举次数,将整除条件化为了不整除的条件,进而得到递推式。
然后由于 \(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)\),有

\[r=G(b_i)-G(b_i-1)+\sum_{e=1}g(p^e)\left(S(\left\lfloor\frac{b_i-1}{p^e}\right\rfloor)-S(\left\lfloor\frac{b_i}{p^e}\right\rfloor)\right) \]

别的不考虑,只看 \(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:

  1. CRT & exCRT
  2. 同余方程
  3. 莫比乌斯反演
    后面看命学,联赛前不会碰了
  4. 类欧几里德
  5. 狄利克雷卷积
  6. 二次剩余
  7. 一车筛子
    可以的话,写一下 3327?
posted @ 2025-11-08 19:25  Z3k7223  阅读(35)  评论(0)    收藏  举报