题目列表

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

共 1070 题
标题OJ题号标签难度最后更新原题
先把打乱后的座位顺序映射成原座位下标序列,再把不满值转化成这个整数序列的逆序对数量。
luoguP5149
归并排序逆序对字符串哈希
普及+/提高2026-06-21 15:31打开
利用每轮比赛前排名有序的性质,打完后胜者组和败者组各自仍有序,再线性归并回新排名。
luoguP1309
归并排序排序模拟思维
普及+/提高2026-06-21 15:27打开
把 01 串的最长不下降子序列转成前缀差值区间最大值,最长上升子序列则只需判断是否存在 0 在 1 前面。
luoguP7809
前缀和ST表思维区间最值
提高+/省选-2026-06-21 14:58打开
把极大极小乘积按 B 区间符号分三类讨论,只需在 A 区间查询最值、最小正数、最大负数和是否有零。
luoguP8818
ST表分类讨论极小化极大思维
提高+/省选-2026-06-21 14:48打开
按 b_i 从大到小离线,把满足 a_j >= 当前阈值的位置加入有序集合,再查询环上最近活跃点距离。
luoguP7333
排序数据结构思维
普及+/提高2026-06-21 14:44打开
按 N 与 M 的大小分类,把条件改写成在前半串循环串中匹配一段前后缀,再用 KMP 与哈希统计可行配对。
luoguP3318
字符串KMP哈希建模分类讨论
提高+/省选-2026-06-21 14:34打开
按被询问到的每个 k 分开离线模拟,只维护该 k 的向后串计数;合并分裂时只更新边界附近 k-1 个起点。
luoguP3823
字符串哈希链表离线计数建模
NOI/NOI+/CTSC2026-06-21 14:25打开
枚举删除的那一位,把删掉该位后相同的字符串分到同一组,每组贡献组合数。
luoguP4503
字符串哈希计数建模
普及+/提高2026-06-21 14:19打开
先按全 # 边框切出所有窗口,再把每个窗口在允许旋转下做最小表示,用集合统计不同图案个数。
luoguP3678
模拟矩阵分类讨论
普及/提高-2026-06-21 14:15打开
把所有 DNA 串拼接后按长度 k 的前缀分组,统计每个相同碱基串在各物种中的出现次数,再做组合计数。
luoguP8643
字符串后缀数组计数组合计数
提高+/省选-2026-06-21 14:08打开
利用插入字符只会落在中间分界线两侧之一,分别线性判断两种情况,再分类讨论唯一性。
luoguP6739
字符串分类讨论建模
普及+/提高2026-06-21 14:01打开
先求每个后缀有多长前缀能作为 s 的子序列,再按后缀字典序和两两 LCP 去重统计不同字符串。
luoguP7469
字符串计数建模排序
提高+/省选-2026-06-21 13:46打开
把长度为 8 的子串和密码都转成 26 个字母的计数签名,再用滑动窗口统计每种签名出现次数。
luoguP8630
字符串滑动窗口哈希
普及/提高-2026-06-21 13:43打开
利用字典保持插入顺序的特性,用 dict.fromkeys 一步完成保序去重。
luoguP4305
哈希去重字典python
入门2026-06-21 13:40打开
枚举跳跃高度和连跳次数,在固定参数下对位置与当前连跳进度做记忆化搜索,最后减去升级费用并比较最优方案。
luoguP3257
动态规划记忆化搜索状态设计枚举
提高+/省选-2026-06-21 13:32打开
设 dp[i][j][s] 表示前 i 轮、已经换 j 次手势且当前手势为 s 时的最大胜场数。
luoguP3609
动态规划dp状态设计
普及/提高-2026-06-21 13:27打开
设 dp[i][j][c] 表示走到第 i 行第 j 个位置且用了 c 次三倍经验时的最大得分,再按左右两个父节点转移。
luoguP1544
动态规划dp状态设计
普及/提高-2026-06-21 13:24打开
设 dp[i][j] 表示前 i 分钟、移动 j 次后最多接到多少苹果,当前位置由 j 的奇偶唯一确定。
luoguP2690
动态规划dp
普及/提高-2026-06-21 13:20打开
把食物网看成 DAG,令入度为 0 的点作为起点,按拓扑序递推每个点的路径条数。
luoguP3183
图论拓扑排序dag计数dp
普及/提高-2026-06-21 13:16打开
把交替加法过程改写成 Fibonacci 型递推,再利用模 p 的周期在有限步内判断谁先变成 0。
luoguP5635
数学递推取模
普及/提高-2026-06-21 13:10打开
按题目分支写递归函数,并用 lru_cache 记忆化 1 到 20 范围内的重复状态。
luoguP1464
记忆化搜索递归动态规划python
普及/提高-2026-06-21 13:06打开
先用 Z 函数求每个位置和字典串前缀的最长匹配长度,再把这些匹配视作区间覆盖做最少跳数贪心。
luoguP8112
字符串贪心Z函数区间覆盖
提高+/省选-2026-06-21 12:51打开
按到达事件推进时间,维护当前运行进程和等待优先队列,遇到更高优先级进程时立即抢占。
luoguP2278
模拟优先队列调度
普及+/提高2026-06-21 12:43打开
按保质期从后往前安排每天吃什么,用小根堆维护当前仍可食用的最便宜巧克力。
luoguP8769
贪心优先队列排序
普及/提高-2026-06-21 12:39打开
按计算机分别维护当前运行任务的小根堆,先弹出已结束任务,再判断剩余算力是否足够。
luoguP8755
模拟优先队列
普及/提高-2026-06-21 12:36打开
每次合并当前最小的两堆果子,等价于构造 Huffman 树,用 Python 的 heapq 维护小根堆。
luoguP1090
贪心优先队列哈夫曼编码python
普及/提高-2026-06-21 12:34打开
先预处理一段村庄只建一个邮局的代价,再做邮局数量分层 DP,并用决策单调性做分治优化。
luoguP4767
动态规划决策单调性分治优化区间
提高+/省选-2026-06-21 12:31打开
把环断成长度为 n 的所有链段,做区间 DP,同时维护最小合并代价和最大合并代价。
luoguP1880
动态规划区间dp环形处理
普及+/提高2026-06-21 12:27打开
把删点顺序转成树边定向,再做树形 DP,维护子树向根汇总权值与根向下可达点数的 Pareto 状态。
luoguP9111
动态规划树形DP建模
提高+/省选-2026-06-21 11:27打开
先用一元生成函数统计普通子树的剪枝顺序,再在 1 到 x 的路径上做带“前后分配”的树形计数 DP。
luoguP8935
动态规划树形DP组合计数计数
省选/NOI-2026-06-21 10:41打开
把装备合成关系看成森林,设 f[u][j][c] 表示在 u 的子树里留出 j 个 u 给父亲继续合成、花费 c 金币时能得到的最大力量值,再做树形分组背包合并子树。
luoguP4037
动态规划树形DP背包状态设计
提高+/省选-2026-06-21 10:35打开
把每张钞票看成独立物品,做 2 维 DP:dp[a][b] 表示最终分给 Alice 金额为 a、Bob 金额为 b 时最多能保留多少张原主人不变的钞票,答案是总张数减去最多保留张数。
luoguP4026
动态规划背包状态设计分类讨论
提高+/省选-2026-06-21 10:28打开
做树上背包,设 f[u][j][sel][cov] 表示子树内选了 j 个点、u 是否放设备、u 是否被儿子监听的方案数,合并儿子时判断儿子是否能被父亲覆盖。
luoguP4516
动态规划树形DP树上背包状态设计
提高+/省选-2026-06-21 10:23打开
离散菜先做凹费用完全背包求每个整数重量的最优值,连续菜再把剩余重量写成分段二次函数最优分配,最后合并两部分答案。
luoguP6893
动态规划背包状态设计分类讨论
提高+/省选-2026-06-21 10:15打开
先做一个容量 200 的 0/1 背包,求每个总 p 下能得到的最大总 k,再按回合数与 d 值差做极小极大动态规划。
luoguP7097
动态规划背包状态设计极小化极大
提高+/省选-2026-06-21 09:59打开
先用完全背包预处理“花费 x 资源当秒最多新增多少采集效率”,再按时间推进 DP:dp[j] 表示当前手里有 j 资源时的最大已有采集效率。
luoguP3891
动态规划完全背包状态设计分类讨论
提高+/省选-2026-06-21 09:44打开
把最多 5 种商品的购买数量压成 base-6 状态,把优惠包和单买都当成转移,在所有合法购买状态上做最短路式动态规划。
luoguP2732
动态规划状态压缩状态设计记忆化搜索
普及+/提高2026-06-21 09:39打开
把每个任务的选择压成 A 机器总时间这一维,设 dp[x] 表示 A 用时为 x 时 B 的最小用时,最后在所有状态里取 max(A,B) 的最小值。
luoguP2224
动态规划背包状态设计分类讨论
普及+/提高2026-06-21 09:30打开
先把可行性化成“所选挂钩总数至少是所选挂饰数减一”,再把挂饰分成必选、必不选和可选三类,对负收益但能加挂钩的部分做 0/1 背包。
luoguP4138
动态规划01背包分类讨论建模
提高+/省选-2026-06-21 09:19打开
把第 i 个小矮人逃走前的条件整理成“已逃走肩高前缀不超过 T+a_i+b_i-H”,再按 a+b 排序并用大根堆维护最多可行人数。
luoguP4823
贪心排序优先队列调度
提高+/省选-2026-06-21 08:50打开
把每个式子化成 `(#s-#c, #s+#c)`,再做差值背包,求总差值为 0 时总长度最大,答案就是长度的一半。
luoguP4832
动态规划背包数学状态设计
提高+/省选-2026-06-21 07:59打开
把分批完成的总费用用前缀和展开成线性形式后,对每个分界点建立直线,用单调队列做斜率优化 DP。
luoguP5785
动态规划前缀和斜率优化凸包优化
提高+/省选-2026-06-21 07:48打开
把连续分段费用写成前缀和形式后,展开平方得到标准斜率优化 DP,用单调队列维护下凸壳。
luoguP3195
动态规划前缀和斜率优化凸包优化
提高+/省选-2026-06-21 07:42打开
用前缀和写出连续分段的建仓代价后,把 DP 转移整理成关于位置 x 的直线最小值查询,并用单调队列做斜率优化。
luoguP2120
动态规划前缀和斜率优化凸包优化
提高+/省选-2026-06-21 07:36打开
先删除所有被支配矩形,把问题化成连续分段 DP,再用单调队列维护凸包优化转移。
luoguP2900
动态规划斜率优化凸包优化贪心预处理
提高+/省选-2026-06-21 07:31打开
把每个站点上的换乘 DP 写成关于发车时刻 p 的直线最小值查询,再按时间扫描并为每个站维护单调队列凸包。
luoguP6302
动态规划斜率优化凸包优化按时间扫描
省选/NOI-2026-06-21 07:23打开
把二维偏序上的最大收益路径 DP 拆成按列扫描,再用两层单调凸包分别处理历史列转移和当前列内的纵向转移。
luoguP4056
动态规划斜率优化凸包优化二维偏序
省选/NOI-2026-06-21 07:09打开
把每个点看成按 x 坐标有向无环图上的一个状态,接收费用可整理成关于目标坐标 x 的直线,用 Li Chao Tree 维护左侧所有可转移点的最小值。
luoguP2497
动态规划几何Li Chao Tree最短路
省选/NOI-2026-06-21 06:57打开
把家庭按最终去的会场分成 4 段,设 dp[k][i] 表示前 i 户用了 k 个中间会场的最小代价,再把区间代价整理成直线形式,用斜率优化把 3 层转移压到线性。
luoguP8632
动态规划斜率优化前缀和优化
提高+/省选-2026-06-21 06:52打开
把每位同学的到达时刻平移为“最早可被接走的回程时刻”,再设 dp[x] 表示最后一班车在时刻 x 返回时的最小等待和,并用斜率优化维护转移直线。
luoguP5017
动态规划斜率优化前缀和优化
提高+/省选-2026-06-21 06:36打开
用双指针枚举答案区间,再用单调队列维护当前窗口内“长度恰好为 d 的子段最大和”,从而快速判断把哪一段清零后能否让总和不超过 p。
luoguP3594
双指针单调队列前缀和优化
提高+/省选-2026-06-21 06:31打开
设 dp[i] 表示到第 i 棵树的最少疲劳跳跃次数,用单调队列维护最近 k 棵树里“dp 更小且高度更优”的候选前驱,把每次询问做到 O(n)。
luoguP3572
动态规划单调队列队列
提高+/省选-2026-06-21 06:25打开
把每段固定方向的时间看成一次行或列上的区间转移,设 dp[x][y] 表示当前位置最大滑行距离,再用单调队列优化每段的滑动窗口最大值。
luoguP2254
动态规划单调队列网格
提高+/省选-2026-06-21 06:17打开
设 dp[i][j] 表示第 i 天结束时持有 j 股的最大收益,把买卖转移改写成区间最值,再用单调队列把每一天优化到 O(MaxP)。
luoguP2569
动态规划单调队列建模
提高+/省选-2026-06-21 06:05打开
先二分最长段长度的最小可行值,再在该上界下用滑动窗口优化的计数 DP 统计所有合法连续划分方案。
luoguP2511
二分答案动态规划前缀和优化滑动窗口计数DP
提高+/省选-2026-06-21 06:00打开
设 dp[i][j] 表示长度为 i、逆序对数为 j 的排列个数,再用插入最大值的转移和前缀和把求和优化到 O(nk)。
luoguP2513
动态规划前缀和优化计数DP逆序对
普及+/提高2026-06-21 05:55打开
把每一行压成二进制状态,预处理单行合法状态后按行做状压 DP,统计所有不相邻的种草方案数。
luoguP1879
状态压缩动态规划计数DP网格DP
普及+/提高2026-06-21 05:51打开
先预处理单行合法状态,再按行做只依赖前两行的状压 DP,求最多能放多少炮兵。
luoguP2704
状态压缩动态规划轮廓DP经典题
提高+/省选-2026-06-21 05:42打开
枚举两只小猪反推出一条合法下凹抛物线,把每条抛物线离散成一个覆盖集合,再做最少集合覆盖的状压 DP。
luoguP2831
状态压缩动态规划几何最小覆盖
提高+/省选-2026-06-21 05:36打开
把较短维压成二进制状态,按行做三行覆盖检查的轮廓 DP,并用 `(总代价, 油库数量)` 做字典序最优。
luoguP3888
状态压缩动态规划轮廓DP最小支配集
提高+/省选-2026-06-21 05:30打开