2026 · 10 做题记录 (每日更新)
1005
tag : 反悔贪心
-
二分转判定
-
枚举分界线
-
扫描线
-
反悔贪心 prei + sufi >= k
tag : 构造 性质 调整法
-
\(bi = 0\) 一定是最大字符
-
每次更新 \(b\) 数组
tag : 构造 性质 前缀异或和 模型转化
-
看到操作想到差分,进而想到前缀异或和
-
通过模拟,发现性质,得到转化
-
即,将原问题转化为比较两个串前缀异或和中 1 的个数
tag : 构造 建图优化 点边对偶
-
从 \(O(n^2)\) 连点建图通过点边对偶 转化成:将每个斜率作为节点建图 \(=>\) \(O(n)\)
-
每次操作即被转化成对每个点的相邻两条边操作,即 :无向图的邻边匹配问题
-
然后通过对树边和非树边的讨论,分别对每个连通块求解,得到构造
tag : 图论 连通块 度数 细节警示
- 细节注意:\(dfs\) 遍历连通块时不能中途 \(return\),否则会漏掉未访问的顶点
1006
-
细节注意:更新右端点时忘记更新最大值 (导致模拟赛 T1 挂分 100 -> 40)
1008
-
上午
-
没有想到把模数提进来:
-
\(\left\lfloor \frac{10^N \bmod M^2}{M} \right\rfloor\)
-
建图正确,但是没有分别讨论环和树
-
若 \(u \to v\),则 \(R(v) \subseteq R(u)\),故 \(c_u \ge c_v\)。因此 \(c_u > c_v\) 定向 \(u \to v\),\(c_u < c_v\) 定向 \(v \to u\)。
-
若 \(c_u = c_v\),则必须 \(R(u)=R(v)\),即 \(u,v\) 强连通。相同 \(c\) 的连通块必须定向为强连通图。
-
题目保证有解 \(\Rightarrow\) 这些连通块无桥。DFS 定向:树边父 \(\to\) 子,非树边子孙 \(\to\) 祖先,即强连通。
-
实现:不同 \(c\) 直接定向;相同 \(c\) 的边 DFS,未访问则 \(u \to v\) 并递归,已访问则 \(u \to v\)(\(v\) 是祖先)。
-
晚上
-
感觉时间不太够,只写完前 5 个题;
-
赛后发现 T6 是个状压 DP,比较简单;
-
T7 Range Queries and Copies_CSES - 1737 学长说要用主席树 ,不太会,写了一个离线建版本树 + DFS + 回滚数据结构 AC了
1009
-
模型转化:把原式拆成正常边权和后,转化为在分层图上恰好选一条边免费、一条边双倍的最短路。
-
多个状态转移
-
误以为"区间不含颜色 c"可以用"区间全变成某个 d ≠ c"替代,漏掉了"部分刷色、整体不含"这一中间状态
-
正确的状态是同时维护 \(flrc\)(区间全变成 \(c\))和 \(glrc\)(区间不含 \(c\))两个状态
-
每个节点(含非根)都最多保留 2 条能向上连接的子边,保留满 2 条则返回不能连父边,否则返回能连父边,其余边删除。
-
我只写了一个 \(O(mlogm+2k⋅knlog(kn))\) 的暴力 MST,80 分 还没有优化
-
较为简单的一道字符串题,并复习了KMP 算法
-
通过模拟发现 0 的奇偶性不变,然后奇偶编码
-
注意这道题会卡单哈希
1010
今天自己做CSP-S 2026 提高级模拟赛 Day3, 赛时得分 :40 + 50 + 15 + 40 = 145
-
赛时复盘 :没有想到先枚举树边,再用树上差分
-
删掉一条树边后,统计有多少条非树边跨越了它(用树上差分求路径覆盖数)
-
若覆盖数为 0 则方案数加 m(随便删一条非树边)
-
为 1 则加 1(必须删这条唯一跨越的非树边)
-
大于 1 则不加。
-
赛时只写了暴力的期望DP,知道要用矩阵加速,但是没有推出矩阵 T
1011
上午返校上常规(竞赛放假)
下午竞赛,具体如下
-
打了这场 \(luogu\) 月赛,得分 100 + 100 + 0 + 25
-
排名 100 多,练习了数学和 DP
-
复习了数据结构 专题练习-数据结构基础
-
晚上写 Vjudge 题单,最近优先完成国庆集训的题单,并重点领悟对同类题目的分析和思考历程,深入学习各类模型的转化
-
10月3日上午专题2 (计数专题)
-
自己写出来 \(O(n ^ 2)\) 的暴力DP
-
学习到了技巧 :对全局写一个整体平移量,从而优化转移
-
把"选择区间"转化为"活跃区间数的变化",利用乘法原理逐步累乘方案数
-
每个位置的覆盖需求固定,相邻位置活跃数的变化只能通过开始或结束一个区间实现,从而得到唯一的转移方式
1012
上午竞赛,打 ARC125,A掉 A,B题,rank = 2 赛后改过C,D
下午回班学常规,刚好数理化三科
晚上学竞赛,继续做昨晚计数题单:10月3日上午专题2 (计数专题)
-
元素 \(x\) 会被计入答案,当且仅当:
-
\(x\) 不是全局最大值;
-
在所有值 \(≥x\) 的元素中,\(x\) 是第一个出现的。
-
贡献的计算很巧妙,利用了概率,避免了组合数公式的复杂化简,具体如下:
-
计算贡献
设数组长度为 \(n\),总排列数为 \(n!\)。
对于某个值 \(v\),设:
-
\(freq_v\):值等于\( v \)的元素个数;
-
\(c\):值 \(≥v \)的元素总数。
-
对于任意一个值为 (v) 的元素,它在所有 \((\ge v)\) 的元素中排第一的概率是:\(\frac{1}{c}\)
-
警示:务必要保持清晰简洁的码风,这么一个简单题,我竟然调了半个小时
-
还未调过,有点小问题
-
同时重新复习 Tarjan 算法与无向图连通性(割点与桥)
1013
上午打模拟赛 模拟赛 - 20261013, rank = 4,T1记忆化搜索写错了???
赛时得分:67 + 100 + 68 + 8 + 9 = 252
下午学习文化课
晚上改题(上午模拟赛)
-
记忆化搜索写错了,!!!???
-
给自己一个警示,对于 DAG(有向无环图)上的最长路问题
-
AC 代码放出来,如下
tag : 数学推导 滑动窗口
- 定义
\(A_i \text{ 表示骑士 } i \text{ 的发言时长}\)
\(B_i \text{ 表示骑士 } i \text{ 的到达时间}\)
\(End_i \text{ 表示骑士 } i \text{ 发言结束的时刻}\)
- 递推式
\(End_i = \max(End_{i-1}, B_i) + A_i\)
- 推导展开
\(End_i = \max(0, B_i) + A_i = B_i + A_i\)
\(End_{i+1} = \max(End_i, B_{i+1}) + A_{i+1}\)
\(= \max(B_i + A_i, B_{i+1}) + A_{i+1}\)
\(= \max(B_i + A_i + A_{i+1}, \ B_{i+1} + A_{i+1})\)
\(End_{i+2} = \max(End_{i+1}, B_{i+2}) + A_{i+2}\)
\(= \max(\max(B_i + A_i + A_{i+1}, \ B_{i+1} + A_{i+1}), \ B_{i+2}) + A_{i+2}\)
\(= \max(B_i + A_i + A_{i+1}, \ B_{i+1} + A_{i+1}, \ B_{i+2}) + A_{i+2}\)
\(= \max(B_i + A_i + A_{i+1} + A_{i+2}, \ B_{i+1} + A_{i+1} + A_{i+2}, \ B_{i+2} + A_{i+2})\)
- 归纳通项
\(Ans_i = End_{i+N-1} = \max_{k=i}^{i+N-1} \left( B_k + \sum_{j=k}^{i+N-1} A_j \right)\)
- 前缀和优化
\(设 \ S_k = \sum_{j=1}^k A_j \ ,则 \ \sum_{j=k}^{i+N-1} A_j = S_{i+N-1} - S_{k-1}\)
\(Ans_i = \max_{k=i}^{i+N-1} \left( B_k + S_{i+N-1} - S_{k-1} \right)\)
\(= S_{i+N-1} + \max_{k=i}^{i+N-1} \left( B_k - S_{k-1} \right)\)
- 转化为滑动窗口
\(令 \ C_k = B_k - S_{k-1} \ ,则最终公式为:\)
\(Ans_i = S_{i+N-1} + \max_{k=i}^{i+N-1} (C_k)\)
tag : 构造 dfs
tag : 模型转化 数据结构 离线处理
-
核心:岛数 \(=\) 区间内满足 \(h_i > x\) 的点数 \(-\) 相邻且两端都满足 \(h_i > x\) 的边数
-
相邻边条件等价于:\(\min(h_{i-1}, h_i) > x\)
-
离线:
-
点:位置 \(i\),权值 \(h_i\)
-
边:位置 \(i\) 表示相邻位置 \((i-1, i)\),权值 \(\min(h_{i-1}, h_i)\),其中 \(i \in 2, n\)
-
所有询问按 \(x\) 从大到小排序
-
点和边也按权值从大到小排序
-
用双指针扫描,把权值 \(> x\) 的点和边分别加入两个树状数组
-
对询问 \(l, r, x\):
-
点数 \(= \text{query}(r) - \text{query}(l - 1)\)
-
边数 \(= \text{query}(r) - \text{query}(l)\)
-
ans \(= \text{点数} - \text{边数}\)
1014
上午做 CSP-S2024真题,得分 100 + 60 + 35 + 0 = 195 > 180
下午改上午比赛
晚上写题单
-
赛时竟然没有想到答案具有单调性???
-
所以可以二分
tag : DP 线段树
-
赛时想到了一个 \(O(n ^ 3)\)的 DP,得了 35 分
-
后来发现状态可以优化:\(dpiv\) = 处理完前 \(i\) 个数,\(A_i\) 所在颜色最后值为 \(A_i\),另一种颜色最后值为 \(v\) 时的最大得分。(\(v=0\) 表示另一种颜色为空)
-
但这是 \(O(n ^ 2)\)的,转移还可以优化:
-
全局增量 \(add\)
-
维护 最大/次大值
-
这样就是\(O(n)\)的了
-
终于改过了!
-
发现是树形 DP 的状态不完整。
-
需要对缩点后的子树的建造数分别计数。
-
核心:缩点成树后,军营连通块对应树上的一棵最小子树
-
桥必须看守,边双内部边自由(每条可选 \(2\) 种,最后统一乘 \(2^{m-\text{edcc}+1}\))。
-
树上 DP 需要三个状态:
-
\(f0u\):子树内无军营;
-
\(f1u\):子树内有军营,且 \(u\) 在军营连通块中;
-
\(f2u\):子树内有军营,但 \(u\) 不在军营连通块中。
-
转移时注意边 \((u,v)\) 看守与否的选择数:
-
从 \(f0\) 接入 \(f1\) 时,若看守 边,则 \(u\) 进入连通块 → 归入 \(f1\)(\(1\) 种);
-
若不看守 边,则 \(u\) 不进入连通块 → 归入 \(f2\)(\(1\) 种)。
-
不能两者都乘 \(2\),否则会重复计数并漏掉 \(f2\)。
-
最终答案:\((f1\\text{根} + f2\\text{根}) \times 2^{m - \text{edcc} + 1} \bmod 10^9+7\)。
1015
上午打 CF2231,100 + 100 + 100 = 300 rank = 4
下午改上午比赛,过了 D 题(贪心),被一个绿题P10334 UESTCPC 2024 饮料卡了两个小时
晚上写 Vjudge题单 (数据结构)10月3日下午专题
tag : DP 数据结构
-
把"区间内整除链计数"离线拆成"从右往左枚举左端点 + 在终点打标记求前缀和"
-
而每条链只挂在它首元素的倍数上,所以时间复杂度是对的
-
详细:
-
按终点分桶 :一条链首下标 \(\ge l\)、末下标 \(\le r\) 就必在 \(l,r\) 内,于是询问 = 对"终点位置"的前缀和,区间计数 → 前缀和问题。
-
滚动左端点 \(l\)(差分) :\(S_l=S_{l+1}+C_l\),\(l\) 从 \(n\) 降到 \(1\) 时只需累加"以 \(l\) 为起点"的增量 \(C_l\),不重算。
-
性质 :链长 \(\le\log_2 n\),且链头为 \(a_l\) 后所有元素都是 \(a_l\) 的倍数 → \(C_l\) 只在 \(a_l\) 的倍数处非零,规模 \(\sum n/a_l=O(n\log n)\)。
-
值域 DP :按值从小到大枚举倍数,把 \(C_l(y)\) 推给后继 \(z\)(前驱值必更小,天然有序),用 \(posz >= posy\) 保证下标递增;结果单点加进树状数组,询问取前缀和。
-
复杂度 \(O(n\log^2 n+q\log n)\)。
1016
上午打 模拟赛 - 20261016 20 + 9 + 48 = 77,不太好
赛时:
赛后:
-
T1 Krugomet
-
一直在考虑拓扑,但是对于环的讨论太复杂,没有想到正解是倍增
-
T3 Tornjevi
-
这道题有个很神秘的性质,如下转化很巧妙
-
对于每个蓝色块 \(+ 1\)
-
对于每个红色块 \(- 1\)
-
答案即为前缀最大差值,可用线段树维护
-
T4 Harmonija
-
赛时写了一个 \(O(q * n)\) 的暴力树形DP,但是有细节错误,爆0
-
赛后改了 62 分,正解很复杂,没有继续优化
1017
今天上午打成外模拟赛
100 + 5 + 12 = 117 rank = 1
下午改上午比赛,然后听成外线上讲解
发现 T2 DP的状态非常巧妙,很难想到题解如下:川剧复演 题解
1018
今天上午放假,在家学习 NCE3 L4
下午返校,打比赛CSP-S公益营第一套 (2:30 --- 6:30)
得分:100 + 40 + 25 + 30 = 195 不错
但 T1 卡久了,后面时间不太够
晚上听评讲,讲的不错
1019
上午竞赛,下午常规,都改过了 T2
这套比赛的 T2 很不错,详情见字符串 题解
晚自习写题单:动态规划进阶
A 掉前三题,比较简单,不再赘述
1020
今天上午自己打比赛 CSP-S 2026 提高级模拟赛 Day7
得分 : 100 + 0 + 40 + 20 = 160 rank = 10
下午上常规,做物理机械能守恒实验
晚上改上午比赛
T2, T3比较有价值,均已改过
详细题解总结如下: