题目列表
可按标题、OJ、标签和启发记录快速筛选题目解析。
| 标题 | OJ | 题号 | 标签 | 难度 | 最后更新 | 原题 |
|---|---|---|---|---|---|---|
把每一列压成二进制状态,利用马只会影响前两列的性质,做记录前两列状态和已放马数量的轮廓 DP。 | luogu | P8756 | 提高+/省选- | 2026-06-21 05:26 | 打开 | |
设 dp[mask][u] 为已经吃掉 mask 中这些奶酪且最后停在 u 的最短路程,做起点固定、终点不限的状压 TSP。 | luogu | P1433 | 普及/提高- | 2026-06-21 05:22 | 打开 | |
先在“单次飞行不超过 D”的图上跑 Floyd 求任意两村庄间最短可达代价,再在这个距离矩阵上做状压 TSP。 | luogu | P8733 | 提高+/省选- | 2026-06-21 05:17 | 打开 | |
设 dp[mask] 为安排完这些牛后的最优状态,状态记录最少电梯趟数以及该趟数下最后一趟电梯的最小已载重量。 | luogu | P3052 | 普及/提高- | 2026-06-21 05:13 | 打开 | |
把每包糖果压成一个口味集合 mask,设 dp[mask] 为覆盖这些口味所需的最少包数,做集合覆盖型状压 DP。 | luogu | P8687 | 普及/提高- | 2026-06-21 05:09 | 打开 | |
把每份披萨看成一个原料子集,直接状压枚举所有 2^N 个子集并检查是否包含冲突对即可。 | luogu | P7859 | 普及- | 2026-06-21 05:05 | 打开 | |
设 dp[u][0/1/2] 分别表示 u 放塔、被儿子覆盖、等父亲覆盖的最少塔数,用三状态树形 DP 求树上最小支配集。 | luogu | P2899 | 普及+/提高 | 2026-06-21 05:01 | 打开 | |
把完全二叉树的不完整部分压缩成“最后一个叶子到根”的一条路径,预处理满树方案数后沿这条路径自底向上递推。 | luogu | P8089 | 提高+/省选- | 2026-06-21 04:50 | 打开 | |
把路径内部点的贡献化成 deg(u)-1,将答案转成树上最大点权路径和,再在结尾补上两个端点贡献。 | luogu | P3174 | 提高+/省选- | 2026-06-21 04:44 | 打开 | |
设 dp[u][j] 为 u 子树选 j 个黑点的最大收益,把同色点对距离和拆成每条边两侧黑点对与白点对数量乘边权的贡献来转移。 | luogu | P3177 | 提高+/省选- | 2026-06-21 04:38 | 打开 | |
设 dp[u][j][0/1] 表示子树内选 j 个点给大头且 u 是否属于大头的最小代价,按 M=2 与 M>=3 分别判断父子边是否计入答案。 | luogu | P4362 | 提高+/省选- | 2026-06-21 03:56 | 打开 | |
设 dp[u][j] 为在 u 子树中保留 j 条且仍能通过 u 连到根的边的最优收益,合并儿子时做树上分组背包。 | luogu | P2015 | 普及+/提高 | 2026-06-21 03:50 | 打开 | |
先求以 1 为集会点时的总代价和各子树牛数,再用换根公式 dist[v]=dist[u]+(total-2*sub[v])*w 在线性时间求所有答案。 | luogu | P2986 | 普及+/提高 | 2026-06-21 03:46 | 打开 | |
先用并查集缩掉所有 t=2 的相等点,再只保留 t=0 的不同色森林;计数是森林染色,最小和是带点权二分染色。 | luogu | P7846 | 提高+/省选- | 2026-06-21 03:40 | 打开 | |
设 dp[u][c] 表示 u 染成颜色 c 时整棵子树的合法方案数,再把每个儿子所有不同色状态的方案数乘起来。 | luogu | P4084 | 普及+/提高 | 2026-06-21 03:36 | 打开 | |
先做子树内精确距离 DP,再做一次换根,把父亲方向的精确距离贡献传给儿子,最终累加 0..K 层即可。 | luogu | P3047 | 普及+/提高 | 2026-06-21 03:32 | 打开 | |
设 dp[u] 为以 u 为根能得到的最大二叉树高度,把最深孩子放到兄弟链最后,就有转移 dp[u]=儿子数+max(dp[child])。 | luogu | P8744 | 普及/提高- | 2026-06-21 03:28 | 打开 | |
设 dp[u] 表示必须包含 u 的最优连通块和,自底向上只吸收正贡献子树,就能在线性时间求树上最大连通子图和。 | luogu | P8625 | 普及/提高- | 2026-06-21 03:24 | 打开 | |
在线段树中同时维护区间 1 的数量和最长连续 0,并用左优先递归把目标区间最靠前的若干个 0 填成 1。 | luogu | P4344 | 提高+/省选- | 2026-06-21 03:17 | 打开 | |
用树链剖分把树上路径拆成若干个 DFS 序区间,再在线段树中同时维护区间和与区间最大值。 | luogu | P2590 | 普及+/提高 | 2026-06-21 03:09 | 打开 | |
把安装与卸载操作转成根到点路径设为 1、子树设为 0,再用树链剖分配合线段树维护区间赋值和区间和。 | luogu | P2146 | 提高+/省选- | 2026-06-21 03:03 | 打开 | |
按右端点升序贪心处理请求,只要整段畜栏最小剩余容量仍大于零就接下,并用线段树维护区间最小值。 | luogu | P1937 | 提高+/省选- | 2026-06-21 02:58 | 打开 | |
把区间按长度排序后做双指针,在线段树上维护当前长度窗口内的最大覆盖次数,找到最小可行长度差。 | luogu | P1712 | 提高+/省选- | 2026-06-21 02:53 | 打开 | |
把每个乘车请求看成区间装载,按终点升序且同终点按起点降序贪心接单,再用线段树维护路段最大占用。 | luogu | P1607 | 普及+/提高 | 2026-06-21 02:42 | 打开 | |
把城市之间的每一段铁路看成一个位置,请求对应区间 `[O,D-1]` 的整体加法,能否接单只取决于这段区间的最大占用是否超过座位数。 | luogu | P8856 | 普及/提高- | 2026-06-21 02:39 | 打开 | |
一次染色只能填补两个已黑点之间的空隙,因此答案等价于:两端点初始为黑,且每段初始白色空隙都被至少一个活跃操作跨过。 | luogu | P8473 | 提高+/省选- | 2026-06-21 02:30 | 打开 | |
不要把删除操作当成模除法,而要把每次乘法看成一个位置:插入时赋值为乘数,删除时改回 1,用线段树维护全局乘积。 | luogu | P4588 | 普及/提高- | 2026-06-21 02:24 | 打开 | |
在线段树节点同时维护区间和与区间最小值,区间加时用同一个懒标记同步更新这两个量。 | luogu | P3130 | 普及/提高- | 2026-06-21 02:17 | 打开 | |
把灯的开关状态看成 0/1 数组,区间翻转时用 `区间长度 - 当前开灯数` 更新节点,再用懒标记维护整段翻转。 | luogu | P2846 | 普及/提高- | 2026-06-21 02:13 | 打开 | |
把题意翻成区间约束后,核心只剩查询 `(Y,X)` 中间已知年份的最大降雨量,再配合年份是否完整连续做四类判定。 | luogu | P2471 | 普及+/提高 | 2026-06-21 02:05 | 打开 | |
把每个元素看成最终都会被某个不小于它的相邻块吞并一次,它的最优贡献是左右第一个不小于它的值中的较小者,用单调递减栈即可线性求解。 | luogu | P4393 | 提高+/省选- | 2026-06-21 01:59 | 打开 | |
把每个 K 对应的剩余作业看成一个后缀,预处理后缀和与后缀最小值,就能在线性时间内求出删去最小值后的最大平均分。 | luogu | P4086 | 普及- | 2026-06-21 01:56 | 打开 | |
先把同一坐标上的星星亮度合并,再把题目转成一维数组上固定长度窗口的最大区间和,用前缀和线性扫描即可。 | luogu | P3353 | 普及- | 2026-06-21 01:50 | 打开 | |
用线段树维护区间最大值;查询时返回区间最大,更新时在单点位置做 `max(原值, 新值)` 的只升不降修改。 | luogu | P1531 | 普及- | 2026-06-21 01:44 | 打开 | |
按高度从低到高处理平板,并维护每个单位小格当前最高支撑高度;每块平板左右支柱的长度就是当前高度减去对应边缘小格的最高支撑。 | luogu | P2003 | 普及/提高- | 2026-06-21 01:40 | 打开 | |
用线段树维护区间里空地数与树苗数,把状态分成老树、空地、树苗三类,就能同时处理整段砍树、局部补种和树苗损失统计。 | luogu | P1276 | 普及/提高- | 2026-06-21 01:35 | 打开 | |
用 defaultdict 建立单词到文章编号列表的倒排索引,并在每篇文章内先去重。 | luogu | P3879 | 普及- | 2026-06-21 01:30 | 打开 | |
把所有模式串插入字典树,并在每个前缀节点记录经过它的模式串数量;查询串走到终点后的计数就是答案。 | luogu | P8306 | 普及/提高- | 2026-06-21 01:26 | 打开 | |
把每个值左边更大元素的个数记为 $c[x]$,则做完 $k$ 轮冒泡后的逆序对数就是 $sum(max(c[x]-k,0))$,再用树状数组维护 $c[x]$ 的动态分布。 | luogu | P6186 | 提高+/省选- | 2026-06-21 01:17 | 打开 | |
先找出本来就不必移动的最长严格递增后缀,再用树状数组统计每头前缀奶牛插入有序部分时应后移的步数。 | luogu | P5200 | 普及+/提高 | 2026-06-21 01:01 | 打开 | |
先把所有彩珠按坐标打平成 `(位置, 颜色)` 序列并排序,再用双指针维护覆盖全部颜色的最短区间。 | luogu | P2564 | 普及+/提高 | 2026-06-21 00:56 | 打开 | |
把地板看成容量为 k 的缓存,缺车且地板已满时始终淘汰未来最晚再次被请求的车,再配合下一次出现位置预处理即可得到最优答案。 | luogu | P3419 | 普及+/提高 | 2026-06-21 00:50 | 打开 | |
前 k 轮已经能区分所有 x,当且仅当前缀询问的 lcm 等于 lcm(1..n),因此答案就是所有必需质数最高幂第一次被覆盖轮次的最大值。 | luogu | P8980 | 提高+/省选- | 2026-06-21 00:29 | 打开 | |
先把四个面的单位三角形按立体共边关系建成度数不超过 3 的图,再做带父边与值域边界的记忆化搜索,分别取当前节点左右子树的最优解。 | luogu | P1267 | 提高+/省选- | 2026-06-21 00:07 | 打开 | |
把树定根后自底向上维护子树向上延伸的最大未截断衰减,若某个儿子子树再经过父边就会达到或超过初始强度,就必须在该儿子处安装放大器。 | luogu | P1269 | 提高+/省选- | 2026-06-21 00:00 | 打开 | |
利用叶子枝长公式 limb(x)=min((d(x,i)+d(x,j)-d(i,j))/2),递归删去一个叶子并累加其独有边长,最终得到整棵树的总重量。 | luogu | P1268 | 普及+/提高 | 2026-06-20 23:55 | 打开 | |
把所有加密操作按相反顺序依次撤销,其中分别实现栅栏密码、维吉尼亚密码和 QWE 键盘码的逆变换即可还原原文。 | luogu | P2636 | 普及/提高- | 2026-06-20 23:48 | 打开 | |
把字符串复制成两倍长度后,用最小表示法比较两个候选循环位移并整段淘汰较差起点,在线性时间求出字典序最小表示的起点。 | luogu | P1709 | 普及+/提高 | 2026-06-20 23:40 | 打开 | |
把每种颜色的首末出现位置看成区间,用栈扫描检查区间是否只存在包含关系;最大栈深就是最少轮数。 | luogu | P3668 | 提高+/省选- | 2026-06-20 23:35 | 打开 | |
把平台序列建成最大笛卡尔树,递归计算每个子盆地先灌到根高度、再整体上涨的体积时间,从而求出各平台被淹没时刻。 | luogu | P2897 | 提高+/省选- | 2026-06-20 23:16 | 打开 | |
把“灯亮”和“可达”分开维护,从起点做 BFS;每次开灯后,新亮房间若挨着访问区域就立刻变成可达。 | luogu | P2845 | 普及+/提高 | 2026-06-20 23:12 | 打开 | |
把“初始朝上”和“初始朝右”两种可能同时打包成一个六维状态,用 BFS 求一套公共指令的最短长度。 | luogu | P3610 | 提高+/省选- | 2026-06-20 23:05 | 打开 | |
用 9 位掩码维护每格候选数字,结合数独约束与大小关系反复传播,再按候选最少的格子搜索。 | luogu | P4573 | 提高+/省选- | 2026-06-20 22:48 | 打开 | |
把每种特性的前缀出现次数都减去第一种特性,转成前缀差分状态;相同状态之间的最远距离就是答案。 | luogu | P2843 | 提高+/省选- | 2026-06-20 22:42 | 打开 | |
二分最大位移后,把每个区间转成带最早可接点和最晚失效点的任务,按失效点最小优先贪心推进覆盖前缀。 | luogu | P8660 | 提高+/省选- | 2026-06-20 21:34 | 打开 | |
枚举罪犯和星期几,在线性扫描证词时判断每个人是否必须恒真或恒假,再检查能否凑出恰好 N 个说谎者。 | luogu | P1039 | 普及+/提高 | 2026-06-20 21:26 | 打开 | |
先在外层 DFS 枚举单顺、双顺、三顺的拆法,再对剩余牌型做记忆化搜索,精确求出最少出牌次数。 | luogu | P2668 | 提高+/省选- | 2026-06-20 21:10 | 打开 | |
每次贪心选择当前能让最多乘客少 1 分钟的那段路,把它的行驶时间减 1;这次收益由提前效果能传播到的连续区间内下车人数决定。 | luogu | P1315 | 提高+/省选- | 2026-06-20 19:58 | 打开 | |
按低位更重要的顺序给字母分配数字,每次赋值后立刻检查已经能确定的低位列是否满足进位加法,从而提前剪掉大量无效分支。 | luogu | P1092 | 提高+/省选- | 2026-06-20 19:45 | 打开 | |
先按题目给定优先级把表达式递归下降解析成语法树,再用多组模数代值比较签名,快速判断哪些选项与题干恒等。 | luogu | P1054 | 提高+/省选- | 2026-06-20 19:26 | 打开 |