题目列表
可按标题、OJ、标签和启发记录快速筛选题目解析。
| OJ | 题号 | 标题 | 标签 | 难度 | 最后更新 | 解析 |
|---|---|---|---|---|---|---|
P1045 | 用对数推导 2^P-1 的位数,再用只保留低 500 位的高精度快速幂计算十进制后缀。 | 普及- | 2026-10-07 12:15 | |||
P2392 | 每科独立做左右分组,用 0/1 背包子集和 DP 找最接近总时间一半的可达时间。 | 普及- | 2026-10-07 12:15 | |||
P1786 | 先按帮贡和输入顺序给可调整成员重新分配职位,再按职位、等级和输入顺序排序输出。 | 普及- | 2026-10-07 12:15 | |||
P4924 | 每次复制待旋转子矩阵,根据顺/逆时针旋转公式生成新子矩阵后写回原矩阵。 | 普及- | 2026-10-07 12:15 | |||
P1036 | 用递增下标的 DFS 组合枚举选出 k 个数,只生成 C(n,k) 个组合,组合和用试除法判素数。 | 普及- | 2026-10-07 12:15 | |||
P5741 | 用元组保存学生成绩,枚举所有学生对并检查三科分差和总分分差。 | 普及- | 2026-10-07 12:15 | |||
P1598 | 统计 A 到 Z 的出现次数,从最高层向下逐行输出星号,并用 rstrip 删除行尾多余空格。 | 普及- | 2026-10-07 12:15 | |||
P1205 | 实现矩阵顺时针旋转和水平反射,按题目编号顺序逐一比较目标图案。 | 普及- | 2026-10-07 12:15 | |||
P1009 | 用 Python 大整数逐步维护当前阶乘,并累加得到 1! 到 n! 的和。 | 普及- | 2026-10-07 12:15 | |||
1087 | 用单调栈预处理每个前缀和后缀的最少刷漆笔数,删区间后直接相加。 | 普及 | 2026-10-07 12:15 | |||
1110 | 用队列维护被迫补牛的位置,每加入一头牛后只重新检查它和四邻域的舒适状态。 | 普及 | 2026-10-07 12:15 | |||
1326 | 排序后维护基础贡献,单次查询只计算删除旧值再插入新值造成的区间位移贡献。 | 普及+/提高- | 2026-10-07 12:15 | |||
1373 | 把一次喷洒看成只改变二阶差分的一个位置,答案为二阶差分绝对值和。 | 普及 | 2026-10-07 12:15 | |||
1109 | 把相邻两段边的转向累计起来,总转角为正则逆时针,为负则顺时针。 | 普及- | 2026-10-07 12:15 | |||
P1896 | 状态压缩 DP:压缩每行国王摆放为 bitmask,逐行转移,合法状态需满足同行不相邻且上下行不冲突。 | 提高 | 2026-10-07 12:15 | |||
P3808 | 把所有模式串插入 Trie 并建立 fail 指针,扫描文本串时沿 fail 链统计出现过的终止节点。 | 提高+/省选- | 2026-10-07 12:15 | |||
P3390 | 把普通快速幂中的乘法换成矩阵乘法,用指数二进制拆分求矩阵高次幂。 | 普及+/提高- | 2026-10-07 12:15 | |||
P1020 | 第一问求最长不上升子序列,第二问由 Dilworth 定理转成最长上升子序列,均可用二分维护尾值。 | 普及+/提高- | 2026-10-07 12:15 | |||
P1553 | 按整数、小数、分数、百分数四种格式拆分字符串,分别反转数字部分并按规则去掉多余的零。 | 普及- | 2026-10-07 12:15 | |||
P8817 | 先 BFS 求限制步数内可达,再为每个点保留前 4 个高分候选,枚举中间两个景点凑出四段行程。 | 提高+/省选- | 2026-10-07 12:15 | |||
P8820 | 把路径上的点权最短路压成 k<=3 的 min-plus 矩阵,并用重链剖分维护路径转移。 | 提高+/省选- | 2026-10-07 12:15 | |||
1393 | 必选边先全部累加并缩成连通块,再对可选边按费用做 Kruskal 最小生成树补齐连通:缩点 + MST。 | 普及+/提高- | 2026-10-07 12:15 | |||
P1972 | 按右端点离线处理询问,用树状数组只保留每种颜色在当前前缀中的最后出现位置。 | 提高 | 2026-10-07 12:15 | |||
P1903 | 把查询记录为左右端点和修改次数,用带修莫队同时移动区间与时间维护不同颜色数。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2822 | 用 Pascal 递推预处理组合数对 k 的余数,再对可整除位置建立二维前缀和。 | 普及 | 2026-10-07 12:15 | |||
P1948 | 二分最大付费边长度,把超过阈值的边计为 1,用 0-1 BFS 判断免费额度是否足够。 | 普及+/提高- | 2026-10-07 12:15 | |||
P1991 | 把卫星电话理解为允许保留 S 个无线连通块,在完全图上 Kruskal 到剩 S 个集合。 | 普及 | 2026-10-07 12:15 | |||
P1525 | 按怨气值从大到小加入异组约束,用 2N 并查集找第一条无法避免的冲突边。 | 普及+/提高- | 2026-10-07 12:15 | |||
P1250 | 按要求区间右端点升序处理,若区间内树数不足,就从右往左补树。 | 普及 | 2026-10-07 12:15 | |||
P2887 | 按 SPF 升序扫描防晒霜,用小根堆优先匹配 maxSPF 最小、最快过期的奶牛。 | 普及 | 2026-10-07 12:15 | |||
P14638 | 把包含位置且长度受限的区间转成前缀和坐标中的梯形区域,用 ST 表和单调队列线性求每个询问。 | 省选/NOI- | 2026-10-07 12:15 | |||
P14362 | 枚举被城市化的乡镇集合,并用“原图边只需 MST”的替换性质把每次 Kruskal 的原图边压缩到 n-1 条。 | 提高+/省选- | 2026-10-07 12:15 | |||
P11232 | 用速度平方把每辆车能被测出超速的测速仪转成区间,再按右端点贪心求最少保留测速仪。 | 提高+/省选- | 2026-10-07 12:15 | |||
P5149 | 先把打乱后的座位顺序映射成原座位下标序列,再把不满值转化成这个整数序列的逆序对数量。 | 普及 | 2026-10-07 12:15 | |||
P3318 | 按 N 与 M 的大小分类,把条件改写成在前半串循环串中匹配一段前后缀,再用 KMP 与哈希统计可行配对。 | 提高+/省选- | 2026-10-07 12:15 | |||
P3678 | 先按全 # 边框切出所有窗口,再把每个窗口在允许旋转下做最小表示,用集合统计不同图案个数。 | 普及+/提高- | 2026-10-07 12:15 | |||
P8630 | 把长度为 8 的子串和密码都转成 26 个字母的计数签名,再用滑动窗口统计每种签名出现次数。 | 普及 | 2026-10-07 12:15 | |||
P8112 | 先用 Z 函数求每个位置和字典串前缀的最长匹配长度,再把这些匹配视作区间覆盖做最少跳数贪心。 | 提高+/省选- | 2026-10-07 12:15 | |||
P8755 | 按计算机分别维护当前运行任务的小根堆,先弹出已结束任务,再判断剩余算力是否足够。 | 普及 | 2026-10-07 12:15 | |||
P4037 | 把装备合成关系看成森林,设 f[u][j][c] 表示在 u 的子树里留出 j 个 u 给父亲继续合成、花费 c 金币时能得到的最大力量值,再做树形分组背包合并子树。 | 提高+/省选- | 2026-10-07 12:15 | |||
P4516 | 做树上背包,设 f[u][j][sel][cov] 表示子树内选了 j 个点、u 是否放设备、u 是否被儿子监听的方案数,合并儿子时判断儿子是否能被父亲覆盖。 | 提高+/省选- | 2026-10-07 12:15 | |||
P4823 | 把第 i 个小矮人逃走前的条件整理成“已逃走肩高前缀不超过 T+a_i+b_i-H”,再按 a+b 排序并用大根堆维护最多可行人数。 | 提高+/省选- | 2026-10-07 12:15 | |||
P5785 | 把分批完成的总费用用前缀和展开成线性形式后,对每个分界点建立直线,用单调队列做斜率优化 DP。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2120 | 用前缀和写出连续分段的建仓代价后,把 DP 转移整理成关于位置 x 的直线最小值查询,并用单调队列做斜率优化。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2900 | 先删除所有被支配矩形,把问题化成连续分段 DP,再用单调队列维护凸包优化转移。 | 提高+/省选- | 2026-10-07 12:15 | |||
P8632 | 把家庭按最终去的会场分成 4 段,设 dp[k][i] 表示前 i 户用了 k 个中间会场的最小代价,再把区间代价整理成直线形式,用斜率优化把 3 层转移压到线性。 | 提高+/省选- | 2026-10-07 12:15 | |||
P5017 | 把每位同学的到达时刻平移为“最早可被接走的回程时刻”,再设 dp[x] 表示最后一班车在时刻 x 返回时的最小等待和,并用斜率优化维护转移直线。 | 提高+/省选- | 2026-10-07 12:15 | |||
P3594 | 用双指针枚举答案区间,再用单调队列维护当前窗口内“长度恰好为 d 的子段最大和”,从而快速判断把哪一段清零后能否让总和不超过 p。 | 提高+/省选- | 2026-10-07 12:15 | |||
P3572 | 设 dp[i] 表示到第 i 棵树的最少疲劳跳跃次数,用单调队列维护最近 k 棵树里“dp 更小且高度更优”的候选前驱,把每次询问做到 O(n)。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2569 | 设 dp[i][j] 表示第 i 天结束时持有 j 股的最大收益,把买卖转移改写成区间最值,再用单调队列把每一天优化到 O(MaxP)。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2511 | 先二分最长段长度的最小可行值,再在该上界下用滑动窗口优化的计数 DP 统计所有合法连续划分方案。 | 提高+/省选- | 2026-10-07 12:15 | |||
P2704 | 先预处理单行合法状态,再按行做只依赖前两行的状压 DP,求最多能放多少炮兵。 | 提高+/省选- | 2026-10-07 12:15 | |||
P3888 | 把较短维压成二进制状态,按行做三行覆盖检查的轮廓 DP,并用 `(总代价, 油库数量)` 做字典序最优。 | 提高+/省选- | 2026-10-07 12:15 | |||
P8756 | 把每一列压成二进制状态,利用马只会影响前两列的性质,做记录前两列状态和已放马数量的轮廓 DP。 | 提高+/省选- | 2026-10-07 12:15 | |||
P8733 | 先在“单次飞行不超过 D”的图上跑 Floyd 求任意两村庄间最短可达代价,再在这个距离矩阵上做状压 TSP。 | 提高+/省选- | 2026-10-07 12:15 | |||
P7859 | 把每份披萨看成一个原料子集,直接状压枚举所有 2^N 个子集并检查是否包含冲突对即可。 | 普及- | 2026-10-07 12:15 | |||
P2899 | 设 dp[u][0/1/2] 分别表示 u 放塔、被儿子覆盖、等父亲覆盖的最少塔数,用三状态树形 DP 求树上最小支配集。 | 普及+/提高- | 2026-10-07 12:15 | |||
P3177 | 设 dp[u][j] 为 u 子树选 j 个黑点的最大收益,把同色点对距离和拆成每条边两侧黑点对与白点对数量乘边权的贡献来转移。 | 提高+/省选- | 2026-10-07 12:15 | |||
P7846 | 先用并查集缩掉所有 t=2 的相等点,再只保留 t=0 的不同色森林;计数是森林染色,最小和是带点权二分染色。 | 提高+/省选- | 2026-10-07 12:15 | |||
P4084 | 设 dp[u][c] 表示 u 染成颜色 c 时整棵子树的合法方案数,再把每个儿子所有不同色状态的方案数乘起来。 | 普及+/提高- | 2026-10-07 12:15 |