题目列表
可按标题、OJ、标签和启发记录快速筛选题目解析。
| 标题 | OJ | 题号 | 标签 | 难度 | 最后更新 | 原题 |
|---|---|---|---|---|---|---|
距离和最小的点即树的重心:用重心模板求重心再算距离和;另一解法用换根 DP 递推全部点的距离和。 | luogu | P1395 | 普及 | 2026-07-16 23:59 | 打开 | |
等差数列区间加可拆系数用双 Fenwick 维护差分,也可用线段树等差数列懒标记,两者均 O(log n)。 | luogu | P1438 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
线段树节点同时维护区间和与平方和,用懒标记支持区间加,方差由二阶矩公式 O(log n) 求出。 | luogu | P1471 | 提高 | 2026-07-16 23:59 | 打开 | |
位掩码压缩集合 + 集合并运算,popcount 输出颜色种类数。 | luogu | P1558 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
离散化后固定中间点,用两次树状数组扫描分别统计左小与右大个数,相乘求和得三元组总数。 | luogu | P1637 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
用线段树双懒标记(赋值覆盖翻转)维护 01 序列,节点存 0/1 两套前缀后缀与最长连续段,单次操作 O(log n)。 | luogu | P2572 | 提高 | 2026-07-16 23:59 | 打开 | |
树上边差分:P 对 u、v、lca 三个点做差分配置,Q 用 DFS 序子树和回答单边覆盖次数。 | luogu | P3038 | 提高+/省选- | 2026-07-16 23:59 | 打开 | |
用倍增 LCA 定位每条路径的公共祖先,再以树上点差分四个端点标记统一汇总,求出被经过次数最多的点。 | luogu | P3128 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
区间加与区间和模板题,可用懒标记线段树或两个 Fenwick 树维护。 | luogu | P3372 | 普及/提高- | 2026-07-16 23:59 | 打开 | |
把区间乘和区间加统一成仿射懒标记,维护模意义下的区间和。 | luogu | P3373 | 普及/提高- | 2026-07-16 23:59 | 打开 | |
用倍增表 up[u][j] 记录 2^j 级祖先,查询时先提深再同步跳,单次询问 O(log n)。 | luogu | P3379 | 普及 | 2026-07-16 23:59 | 打开 | |
用重链剖分把树上路径与子树映射为 DFS 序连续区间,再由懒标记线段树维护区间加与区间和。 | luogu | P3384 | 提高+/省选- | 2026-07-16 23:59 | 打开 | |
用翻转懒标记维护区间亮灯数量,整段翻转时数量取反、标记异或,单次操作 O(log n)。 | luogu | P3870 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
树剖拆路径为 O(log n) 段,线段树四元信息维护正反序最大买卖差并支持路径加。 | luogu | P3976 | 省选/NOI- | 2026-07-16 23:59 | 打开 | |
用线段树维护区间和与最大值,整段最大值不超过 1 时剪枝跳过开方,摊还 O(log n) 级单次操作。 | luogu | P4145 | 提高 | 2026-07-16 23:59 | 打开 | |
线段树维护区间和、最大前缀、最大后缀和最大子段和,支持单点修改。 | luogu | P4513 | 普及+/提高 | 2026-07-16 23:59 | 打开 | |
每个串压成 0/1 两个位掩码,线段树按位或合并区间约束,统计兼容二进制串数量。 | luogu | P5522 | 提高 | 2026-07-16 23:59 | 打开 | |
找同色节点的直径端点并判共线,共线时按切断端点两侧第一条边后的连通块大小相乘计数。 | luogu | P5588 | 提高 | 2026-07-16 23:59 | 打开 | |
对每条边断开后,利用最大子树方向唯一的性质沿 heavy 链倍增定位两侧重心,配合换根在 O(log n) 内枚举每条边。 | luogu | P5666 | 省选/NOI- | 2026-07-16 23:59 | 打开 | |
从 1 号点 BFS,边权全为 1 时层数即距离,距离为 d 的点停止扩展并计数,一次遍历 O(n)。 | luogu | P5908 | 普及- | 2026-07-16 23:59 | 打开 | |
线段树节点维护区间两端值与最长交替前后缀,合并时按跨中点边界是否交替拼接,单点翻转 O(log n)。 | luogu | P6492 | 普及+/提高- | 2026-07-16 23:59 | 打开 | |
最大堆和最小堆维护前缀的较小一半与较大一半,奇数长度输出最大堆顶。 | luogu | P1168 | 普及/提高- | 2026-07-16 21:00 | 打开 | |
两个堆维护已输出排名左侧与右侧元素,使每次 GET 的目标值位于右堆顶。 | luogu | P1801 | 普及+/提高 | 2026-07-16 21:00 | 打开 | |
有修改的堆 1. 自己维护堆+桶 2. 堆的过时元素删除 | luogu | P1878 | 普及 | 2026-07-16 21:00 | 打开 | |
把每个递增二次函数看成有序序列,用堆做 n 路归并取前 m 项。 | luogu | P2085 | 普及/提高- | 2026-07-16 21:00 | 打开 | |
Fenwick 维护当前不相交线段的起点,并按秩寻找可能相交的前驱和后继。 | luogu | P2161 | 普及+/提高- | 2026-07-16 21:00 | 打开 | |
补零后执行 K 叉 Huffman 合并,堆中同时维护权重与子树高度。 | luogu | P2168 | 提高+/省选- | 2026-07-16 21:00 | 打开 | |
单调递增 deque 保存窗口内仍可能成为最小值的下标。 | luogu | P2251 | 普及 | 2026-07-16 21:00 | 打开 | |
用全局增量抵消统一加 q,并以三个单调队列线性取当前最长蚯蚓。 | luogu | P2827 | 提高+/省选- | 2026-07-16 21:00 | 打开 | |
在差分数组上用 Fenwick 做两个端点修改,前缀和恢复单点值。 | luogu | P3368 | 普及/提高- | 2026-07-16 21:00 | 打开 | |
Fenwick 维护单点增量与前缀和,用两个前缀和相减回答区间和。 | luogu | P3374 | 普及/提高- | 2026-07-16 21:00 | 打开 | |
用 heapq 直接维护可重复整数小根堆,并用 bytearray 批量输出。 | luogu | P3378 | 普及- | 2026-07-16 21:00 | 打开 | |
按截止时间扫描,最大堆维护已选工期;超时则用更短任务替换最长任务。 | luogu | P4053 | 普及+/提高 | 2026-07-16 21:00 | 打开 | |
按值排序发现好配对只产生在相邻位置之间,转成二维偏序用离线 Fenwick 查询。 | luogu | P5677 | 提高 | 2026-07-16 21:00 | 打开 | |
折半枚举每个数的不选、原值、阶乘三种状态,按使用贴纸数统计目标和方案。 | codeforces | 525E | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
把质数拆成两组生成所有乘积,二分答案并双指针统计不超过它的乘积对数。 | codeforces | 912E | 省选/NOI- | 2026-07-16 20:10 | 打开 | |
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/525E,本页仅保留入口。 | luogu | CF525E | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/912E,本页仅保留入口。 | luogu | CF912E | 省选/NOI- | 2026-07-16 20:10 | 打开 | |
位掩码维护行列宫约束,每层选择候选最少空格并回溯最大化加权分数。 | luogu | P1074 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
把当前国家与已学文化集合共同作为 Dijkstra 状态,并用集合包含关系做支配剪枝。 | luogu | P1078 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
枚举总长度的因数作为原木长度,用降序拼组 DFS 与失败剪枝判断可行性。 | luogu | P1120 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
按字典序 DFS 枚举至多 5 步移动,完整模拟重力、同时消除与连锁反应。 | luogu | P1312 | 省选/NOI- | 2026-07-16 20:10 | 打开 | |
把九宫格编码为 bytes 状态,从起点 BFS 到固定目标得到最少移动次数。 | luogu | P1379 | 普及+/提高 | 2026-07-16 20:10 | 打开 | |
迭代加深枚举单位分数个数,用剩余项上界和最优末分母剪枝。 | luogu | P1763 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
以错位非空棋子数为估价函数,在深度 15 内做 IDA*。 | luogu | P2324 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
从初始格做八方向 BFS,最远可达草地的距离就是完全侵占周数。 | luogu | P2960 | 普及- | 2026-07-16 20:10 | 打开 | |
按挖掘深度分层做子集 DP,预处理新节点连接已挖集合的最短边代价。 | luogu | P3959 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
折半生成两组子集和,排序一边并用 bisect_right 统计预算内组合。 | luogu | P4799 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
把 12 个四进制旋钮压成整数,正反生成状态做双向 BFS 并恢复最短操作序列。 | luogu | P5507 | 提高+/省选- | 2026-07-16 20:10 | 打开 | |
枚举三个字符串的拼接顺序,用 KMP 求相邻字符串的最大后缀前缀重叠。 | codeforces | 25E | 普及+/提高 | 2026-07-16 19:57 | 打开 | |
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/25E,本页仅保留入口。 | luogu | CF25E | 普及+/提高 | 2026-07-16 19:57 | 打开 | |
用前缀可达性 DP 判断序列能否由原串重复拼成,后缀是否为词用哈希集合或倒序 Trie 查询。 | luogu | P1470 | 普及/提高- | 2026-07-16 19:57 | 打开 | |
枚举前缀 / 字典树 / DP 三种方式求以每个单词结尾的最长词链长度。 | luogu | P1481 | 普及- | 2026-07-16 19:57 | 打开 | |
KMP 统计 border 链长度,再用第二遍线性扫描限制前后缀不能重叠。 | luogu | P2375 | 提高+/省选- | 2026-07-16 19:57 | 打开 | |
分别用合法姓名集合和已点名集合区分 WRONG、OK 与 REPEAT。 | luogu | P2580 | 普及- | 2026-07-16 19:57 | 打开 | |
二进制 Trie 同时记录终止数量和子树数量,统计两串中较短者为公共前缀的消息数。 | luogu | P2922 | 普及+/提高 | 2026-07-16 19:57 | 打开 | |
同一道顺序统计题给出三种解法:离线坐标压缩 + Fenwick、Python 版 FHQ-Treap,以及 C++ 版 FHQ-Treap。 | luogu | P3369 | 提高+/省选- | 2026-07-16 19:57 | 打开 | |
用前缀函数在线性时间输出所有匹配位置,并给出模式串每个前缀的最长 border。 | luogu | P3375 | 普及+/提高 | 2026-07-16 19:57 | 打开 | |
周期和 border 是同一枚硬币的两面:最长 period = len - 最短 border,沿前缀函数链递推。 | luogu | P3435 | 提高+/省选- | 2026-07-16 19:57 | 打开 | |
求字符串的最小周期长度。用整个字符串的最长 border 求能够生成接收片段的最短信号周期。 | luogu | P4391 | 普及+/提高 | 2026-07-16 19:57 | 打开 |