题目列表

可按标题、OJ、标签和启发记录快速筛选题目解析。

共 2161 题
标题OJ题号标签难度最后更新原题
距离和最小的点即树的重心:用重心模板求重心再算距离和;另一解法用换根 DP 递推全部点的距离和。
luoguP1395
换根 DP树形 DP树的重心
普及2026-07-16 23:59打开
等差数列区间加可拆系数用双 Fenwick 维护差分,也可用线段树等差数列懒标记,两者均 O(log n)。
luoguP1438
树状数组差分等差数列线段树懒标记
普及+/提高-2026-07-16 23:59打开
线段树节点同时维护区间和与平方和,用懒标记支持区间加,方差由二阶矩公式 O(log n) 求出。
luoguP1471
线段树懒标记区间加方差浮点数
提高2026-07-16 23:59打开
位掩码压缩集合 + 集合并运算,popcount 输出颜色种类数。
luoguP1558
线段树懒标记位运算区间赋值
普及+/提高-2026-07-16 23:59打开
离散化后固定中间点,用两次树状数组扫描分别统计左小与右大个数,相乘求和得三元组总数。
luoguP1637
树状数组离散化计数贡献法二维偏序
普及+/提高-2026-07-16 23:59打开
用线段树双懒标记(赋值覆盖翻转)维护 01 序列,节点存 0/1 两套前缀后缀与最长连续段,单次操作 O(log n)。
luoguP2572
线段树懒标记01序列区间赋值区间翻转前缀后缀最值
提高2026-07-16 23:59打开
树上边差分:P 对 u、v、lca 三个点做差分配置,Q 用 DFS 序子树和回答单边覆盖次数。
luoguP3038
树上差分LCA倍增树状数组
提高+/省选-2026-07-16 23:59打开
用倍增 LCA 定位每条路径的公共祖先,再以树上点差分四个端点标记统一汇总,求出被经过次数最多的点。
luoguP3128
LCA树上差分
普及+/提高-2026-07-16 23:59打开
区间加与区间和模板题,可用懒标记线段树或两个 Fenwick 树维护。
luoguP3372
线段树懒标记树状数组区间加区间求和python
普及/提高-2026-07-16 23:59打开
把区间乘和区间加统一成仿射懒标记,维护模意义下的区间和。
luoguP3373
线段树懒标记区间乘区间加取模python
普及/提高-2026-07-16 23:59打开
用倍增表 up[u][j] 记录 2^j 级祖先,查询时先提深再同步跳,单次询问 O(log n)。
luoguP3379
LCA倍增模板
普及2026-07-16 23:59打开
用重链剖分把树上路径与子树映射为 DFS 序连续区间,再由懒标记线段树维护区间加与区间和。
luoguP3384
重链剖分线段树懒标记
提高+/省选-2026-07-16 23:59打开
用翻转懒标记维护区间亮灯数量,整段翻转时数量取反、标记异或,单次操作 O(log n)。
luoguP3870
线段树懒标记区间翻转
普及+/提高-2026-07-16 23:59打开
树剖拆路径为 O(log n) 段,线段树四元信息维护正反序最大买卖差并支持路径加。
luoguP3976
重链剖分线段树懒标记区间合并
省选/NOI-2026-07-16 23:59打开
用线段树维护区间和与最大值,整段最大值不超过 1 时剪枝跳过开方,摊还 O(log n) 级单次操作。
luoguP4145
线段树区间开方区间最大值剪枝
提高2026-07-16 23:59打开
线段树维护区间和、最大前缀、最大后缀和最大子段和,支持单点修改。
luoguP4513
线段树最大子段和点修改python
普及+/提高2026-07-16 23:59打开
每个串压成 0/1 两个位掩码,线段树按位或合并区间约束,统计兼容二进制串数量。
luoguP5522
线段树位运算状态压缩区间合并字符串
提高2026-07-16 23:59打开
找同色节点的直径端点并判共线,共线时按切断端点两侧第一条边后的连通块大小相乘计数。
luoguP5588
树的直径LCA树上计数
提高2026-07-16 23:59打开
对每条边断开后,利用最大子树方向唯一的性质沿 heavy 链倍增定位两侧重心,配合换根在 O(log n) 内枚举每条边。
luoguP5666
重心换根倍增树形结构
省选/NOI-2026-07-16 23:59打开
从 1 号点 BFS,边权全为 1 时层数即距离,距离为 d 的点停止扩展并计数,一次遍历 O(n)。
luoguP5908
BFS队列
普及-2026-07-16 23:59打开
线段树节点维护区间两端值与最长交替前后缀,合并时按跨中点边界是否交替拼接,单点翻转 O(log n)。
luoguP6492
线段树区间合并交替序列
普及+/提高-2026-07-16 23:59打开
最大堆和最小堆维护前缀的较小一半与较大一半,奇数长度输出最大堆顶。
luoguP1168
双堆中位数heapqpython
普及/提高-2026-07-16 21:00打开
两个堆维护已输出排名左侧与右侧元素,使每次 GET 的目标值位于右堆顶。
luoguP1801
双堆第k小heapqpython
普及+/提高2026-07-16 21:00打开
有修改的堆 1. 自己维护堆+桶 2. 堆的过时元素删除
luoguP1878
二叉堆链表懒删除python
普及2026-07-16 21:00打开
把每个递增二次函数看成有序序列,用堆做 n 路归并取前 m 项。
luoguP2085
多路归并二叉堆python
普及/提高-2026-07-16 21:00打开
Fenwick 维护当前不相交线段的起点,并按秩寻找可能相交的前驱和后继。
luoguP2161
树状数组有序集合线段倍增权值线段树python
普及+/提高-2026-07-16 21:00打开
补零后执行 K 叉 Huffman 合并,堆中同时维护权重与子树高度。
luoguP2168
K叉Huffman贪心heapqpython
提高+/省选-2026-07-16 21:00打开
单调递增 deque 保存窗口内仍可能成为最小值的下标。
luoguP2251
单调队列滑动窗口dequepython
普及2026-07-16 21:00打开
用全局增量抵消统一加 q,并以三个单调队列线性取当前最长蚯蚓。
luoguP2827
单调队列偏移量模拟python
提高+/省选-2026-07-16 21:00打开
在差分数组上用 Fenwick 做两个端点修改,前缀和恢复单点值。
luoguP3368
树状数组差分区间修改python
普及/提高-2026-07-16 21:00打开
Fenwick 维护单点增量与前缀和,用两个前缀和相减回答区间和。
luoguP3374
树状数组前缀和模板题python
普及/提高-2026-07-16 21:00打开
用 heapq 直接维护可重复整数小根堆,并用 bytearray 批量输出。
luoguP3378
二叉堆heapq模板题python
普及-2026-07-16 21:00打开
按截止时间扫描,最大堆维护已选工期;超时则用更短任务替换最长任务。
luoguP4053
贪心最大堆调度python
普及+/提高2026-07-16 21:00打开
按值排序发现好配对只产生在相邻位置之间,转成二维偏序用离线 Fenwick 查询。
luoguP5677
离线查询二维偏序树状数组最近邻python
提高2026-07-16 21:00打开
折半枚举每个数的不选、原值、阶乘三种状态,按使用贴纸数统计目标和方案。
codeforces525E
Meet-in-the-Middle枚举计数python
提高+/省选-2026-07-16 20:10打开
把质数拆成两组生成所有乘积,二分答案并双指针统计不超过它的乘积对数。
codeforces912E
Meet-in-the-Middle二分答案数论python
省选/NOI-2026-07-16 20:10打开
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/525E,本页仅保留入口。
luoguCF525E
Meet-in-the-Middle枚举计数
提高+/省选-2026-07-16 20:10打开
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/912E,本页仅保留入口。
luoguCF912E
Meet-in-the-Middle二分答案数论
省选/NOI-2026-07-16 20:10打开
位掩码维护行列宫约束,每层选择候选最少空格并回溯最大化加权分数。
luoguP1074
回溯MRV数独位运算python
提高+/省选-2026-07-16 20:10打开
把当前国家与已学文化集合共同作为 Dijkstra 状态,并用集合包含关系做支配剪枝。
luoguP1078
状态最短路Dijkstra支配剪枝python
提高+/省选-2026-07-16 20:10打开
枚举总长度的因数作为原木长度,用降序拼组 DFS 与失败剪枝判断可行性。
luoguP1120
DFS剪枝回溯python
提高+/省选-2026-07-16 20:10打开
按字典序 DFS 枚举至多 5 步移动,完整模拟重力、同时消除与连锁反应。
luoguP1312
DFS模拟剪枝python
省选/NOI-2026-07-16 20:10打开
把九宫格编码为 bytes 状态,从起点 BFS 到固定目标得到最少移动次数。
luoguP1379
BFS状态搜索八数码python
普及+/提高2026-07-16 20:10打开
迭代加深枚举单位分数个数,用剩余项上界和最优末分母剪枝。
luoguP1763
迭代加深DFS分数python
提高+/省选-2026-07-16 20:10打开
以错位非空棋子数为估价函数,在深度 15 内做 IDA*。
luoguP2324
IDA*启发式搜索棋盘python
提高+/省选-2026-07-16 20:10打开
从初始格做八方向 BFS,最远可达草地的距离就是完全侵占周数。
luoguP2960
BFS网格dequepython
普及-2026-07-16 20:10打开
按挖掘深度分层做子集 DP,预处理新节点连接已挖集合的最短边代价。
luoguP3959
状态压缩DP子集枚举分层python
提高+/省选-2026-07-16 20:10打开
折半生成两组子集和,排序一边并用 bisect_right 统计预算内组合。
luoguP4799
Meet-in-the-Middle子集和二分python
提高+/省选-2026-07-16 20:10打开
把 12 个四进制旋钮压成整数,正反生成状态做双向 BFS 并恢复最短操作序列。
luoguP5507
双向BFS状态压缩路径恢复python
提高+/省选-2026-07-16 20:10打开
枚举三个字符串的拼接顺序,用 KMP 求相邻字符串的最大后缀前缀重叠。
codeforces25E
KMP最短公共超串全排列python
普及+/提高2026-07-16 19:57打开
Luogu 无法提交 Codeforces 原题,解析已迁移至 codeforces/25E,本页仅保留入口。
luoguCF25E
KMP最短公共超串全排列
普及+/提高2026-07-16 19:57打开
用前缀可达性 DP 判断序列能否由原串重复拼成,后缀是否为词用哈希集合或倒序 Trie 查询。
luoguP1470
动态规划字符串defaultdictpython
普及/提高-2026-07-16 19:57打开
枚举前缀 / 字典树 / DP 三种方式求以每个单词结尾的最长词链长度。
luoguP1481
字符串字典树dppythoncpp模板题
普及-2026-07-16 19:57打开
KMP 统计 border 链长度,再用第二遍线性扫描限制前后缀不能重叠。
luoguP2375
KMPborder计数势能法python
提高+/省选-2026-07-16 19:57打开
分别用合法姓名集合和已点名集合区分 WRONG、OK 与 REPEAT。
luoguP2580
集合字符串状态记录python
普及-2026-07-16 19:57打开
二进制 Trie 同时记录终止数量和子树数量,统计两串中较短者为公共前缀的消息数。
luoguP2922
Trie前缀计数python
普及+/提高2026-07-16 19:57打开
同一道顺序统计题给出三种解法:离线坐标压缩 + Fenwick、Python 版 FHQ-Treap,以及 C++ 版 FHQ-Treap。
luoguP3369
树状数组坐标压缩有序多重集Treappythoncpp
提高+/省选-2026-07-16 19:57打开
用前缀函数在线性时间输出所有匹配位置,并给出模式串每个前缀的最长 border。
luoguP3375
KMP前缀函数字符串python
普及+/提高2026-07-16 19:57打开
周期和 border 是同一枚硬币的两面:最长 period = len - 最短 border,沿前缀函数链递推。
luoguP3435
KMP周期递推
提高+/省选-2026-07-16 19:57打开
求字符串的最小周期长度。用整个字符串的最长 border 求能够生成接收片段的最短信号周期。
luoguP4391
KMP周期border哈希字符串pythoncpp
普及+/提高2026-07-16 19:57打开