题目列表

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

共 3718 题
OJ题号标题标签难度最后更新解析
RainboyOJ3679
二分完成天数;固定 D 时用求根公式 O(1) 算出每棵树的最晚种下日,再把子树截止时间下压成压缩截止日,按升序排日程即可判定。
二分答案树贪心数学python
提高+/省选-2026-10-10 11:30
RainboyOJ3677
用栈模拟前缀归约,证明子串可消除等价于两端前缀状态相同,把每种栈内容编码成 trie 节点,一遍扫描统计同状态前缀点对即得答案。
字符串栈计数python
普及+/提高-2026-10-10 11:30
RainboyOJ3667
路径按列推进、每列只取入口行到出口行的连续段:按列 DP,用前缀 max 与后缀 max 把列内转移压到 O(n),总复杂度 O(nm)。
动态规划线性DP网格python
普及+/提高-2026-10-10 11:30
RainboyOJ3666
后缀表达式建树后正序求值、逆序传播翻转信号:非运算恒穿过,与运算看兄弟是否为 1,或运算看兄弟是否为 0,每次询问 O(1) 作答,总复杂度 O(|s|+q)。
栈树递推python
普及+/提高-2026-10-10 11:30
RainboyOJ3663
树上带权顶点覆盖:换根 DP 拆出 LCA 上下两部分,倍增合并路径 2x2 min-plus 转移矩阵,单次询问 O(log n)。
-提高+/省选-2026-10-10 11:30
RainboyOJ3657
求点权有根树中最大的对称二叉子树:枚举对称中心,自底向上镜像判定(左右子树互换后同构且点权相同),记忆化 + 迭代栈,O(n^2)。
树二叉树记忆化搜索NOIP
提高+/省选-2026-10-10 11:30
RainboyOJ3661
记录序列就是某棵生成树的先根序:固定树后孩子升序即字典序最小;基环树枚举被删的那条环边,各跑一次贪心取最小。
图论树DFS贪心python
提高2026-10-10 11:30
RainboyOJ3659
按面额升序删冗余:用完全背包位集判定每个面额能否被更小面额表出,表不出的面额个数就是最小等价货币系统的 m。
动态规划背包完全背包位运算python
普及+/提高-2026-10-10 11:30
RainboyOJ3660
二分最短赛道长度 limit,树上 DFS 自底向上用「救生艇」双指针贪心拼接子树伸上来的单链,判定能否修出 m 条长度都 ≥ limit 的赛道。
二分答案树形贪心贪心树python
提高+/省选-2026-10-10 11:30
RainboyOJ3647
二分金币把问题化为定跳距区间的可达性判定,双指针加单调队列把 O(n²) 的 DP 压到 O(n),总复杂度 O(n log G)。
动态规划二分答案单调队列python
提高2026-10-10 11:30
RainboyOJ3649
栈式线性扫描:只统计实际进入的『常数→n』循环层数并取最大作指数,死区不贡献但语法照查,输出 Yes/No/ERR。
模拟栈推导python
普及+/提高-2026-10-10 11:30
RainboyOJ3646
用一位魔法标记把“能否施法”并进状态 (x, y, f),魔法色固定为施法者色,同色 0 / 异色 1 / 施法 2 三档边权跑 Dijkstra。
最短路图论网格python
普及+/提高-2026-10-10 11:30
RainboyOJ3642
全局偏移量把每轮全体 +q 记成一个变量,三段存储值天然降序、只比队头每轮 O(1) 取最大,模拟压到排序 + O(m)。
队列模拟NOIPpython
提高2026-10-10 11:30
RainboyOJ3643
预处理过原点的 O(n²) 条候选抛物线各自打中的小猪 bitmask,n ≤ 18 状压 DP,按编号最小的活猪定序转移求最少小鸟数。
状态压缩动态规划位运算python
提高2026-10-10 11:30
RainboyOJ3639
把玩家路径按 lca 拆成上坡、下坡两段,观察到时转化为两个深度常量等式,用 Tarjan 离线 LCA + 树上差分(子树内桶计数)统计每个观察点看到的键值数。
树上差分LCADFS序NOIP
提高+/省选-2026-10-10 11:30
RainboyOJ3637
枚举间隔 t 并对权重数组做前缀/后缀和,O(n log n) 统计每个物品作为魔法阵 A/B/C/D 出现的次数。
枚举前缀和
提高2026-10-10 11:30
RainboyOJ3633
二分答案 + 倍增 LCA 求路径长度,树上边差分找超标计划的公共边,比较最大公共边权与最长缺口判定可行性。
二分答案LCA树上差分倍增python
提高2026-10-10 11:30
RainboyOJ3630
DFS 按点数分层枚举单顺、双顺、三顺的全部组合,散牌只按张数直方图记忆化精确结算(拆组、带牌、双王火箭),两层相加取最小手数。
提高搜索DFS剪枝记忆化搜索python
提高2026-10-10 11:30
RainboyOJ3631
二分最短跳跃距离,贪心从左到右判定:与上一块保留岩石距离不足 x 就移走当前岩石,O(N log L)。
-普及+/提高-2026-10-10 11:30
RainboyOJ3632
扫描 A 的 f/g 双状态计数 DP:g 记最后一段以当前字符结尾的方案,接段尾与开新段两路合并,滚动加匹配列倒序把空间压到 O(mk)。
动态规划字符串计数DP
普及+/提高-2026-10-10 11:30
RainboyOJ3623
系数大到百位还要求根:在单精度范围内用秦九韶取模判定,把 1e6 个候选点的精确求值降为逐点 O(n) 的模运算。
秦九韶算法同余哈希霍纳法则NOIP
提高2026-10-10 11:30
RainboyOJ3619
距离为 2 的点对必有唯一中转点,按中转点用平方和容斥求和、用最大次大值求最值,O(n) 解决。
树枚举图论python
普及+/提高-2026-10-10 11:30
RainboyOJ3620
按横坐标滚动的一维 DP:上升用完全背包式链式递推把任意次点击压成一次升序扫描,下降与管道过滤用切片,同一趟同时维护最少点击和最多过管两个目标。
动态规划DPpython
普及+/提高-2026-10-10 11:30
RainboyOJ3621
把公共场所数量铺成 129×129 权重网格,覆盖正方形即二维矩形窗口;二维前缀和 O(1) 查询每个中心覆盖的数量之和,枚举全部 129² 个路口取最大并统计方案数。
前缀和暴力枚举二维python
普及+/提高-2026-10-10 11:30
RainboyOJ3613
把局面压缩成(棋子格,空白邻格)的状态图,推动与绕行两类边按需缓存最短路后跑 Dijkstra
搜索BFS最短路网格python
提高+/省选-2026-10-10 11:30
RainboyOJ3611
区间 +1 操作搭出目标高度序列的最少次数:贪心累加每个位置比左邻高出的部分(差分正部之和),O(n) 一遍扫描。
贪心差分NOIP
普及+/提高-2026-10-10 11:30
RainboyOJ3617
枚举组合数更少一维的全部下标组合,把分值拆成纵向 v 与横向 h 两项,在另一维上做选 c 个的顺序 DP 求最小分值。
动态规划线性DP枚举python
普及+/提高-2026-10-10 11:30
RainboyOJ3609
两列同位同排名时距离最小;把第 2 列每根映射成第 1 列同排名伙伴的位置排列,最少交换次数等于它的逆序对数,树状数组 O(n log n)。
排序树状数组逆序对python
提高2026-10-10 11:30
RainboyOJ3610
先证原图瓶颈路必经最大生成树,把 q 个图上询问化归为树上路径最小边权,用倍增 LCA 沿途取 min 单次回答。
最大生成树倍增LCA
普及+/提高-2026-10-10 11:30
RainboyOJ3612
最长抖动子序列:两个滚动变量 up/down 沿相邻高度比较 O(n) 完成转移。
DP线性DP贪心子序列
提高2026-10-10 11:30
RainboyOJ3607
把每趟车'中间站低于全部停靠站'的逐对约束压缩成一个虚拟节点,再在 0/1 权 DAG 上做拓扑最长路,最长链长度即最少级别数。
拓扑排序DAG虚拟节点动态规划python
普及+/提高-2026-10-10 11:30
RainboyOJ3601
把 ax≡1(mod b) 改写成 ax+by=1,用扩展欧几里得在辗转相除时同步维护系数求出逆元,再对 b 取模得到最小正整数解。
数论扩展欧几里得同余方程python
普及+/提高-2026-10-10 11:30
RainboyOJ3602
二分第一个无法满足的订单编号,用差分数组 O(n) 判定前 k 份订单每天总需求是否超限,总复杂度 O((n+m)log m)。
二分差分
普及+/提高-2026-10-10 11:30
RainboyOJ3603
二分答案 + 倍增上跳 + 贪心匹配:到不了首都的军队停在最高可达点,到得了首都的按剩余时间匹配未被覆盖的根之子。
-提高2026-10-10 11:30
RainboyOJ3597
把「已学文化集合」压进状态:状态 (国家, mask) 上跑 Dijkstra,并用忽略文化的地理最短距离做 A* 启发、两条必要条件预检快速判 -1。
搜索最短路状压dijkstrapython
提高2026-10-10 11:30
RainboyOJ3599
交换论证:大臣按左右手数字之积 a_i×b_i 从小到大排队,最大奖赏最小;乘积用 Python 大整数顺扫一遍统计。
贪心排序数学
提高2026-10-10 11:30
RainboyOJ3600
按海拔排序后用树状数组一次预处理每城最近/次近东部城市,把确定性旅程建成按轮倍增表,预算贪心跳 2^k 轮单次询问 O(log N)。
倍增树状数组排序python
提高+/省选-2026-10-10 11:30
RainboyOJ3593
把总旅行时间改写为按下车点加权的到达时刻和,贪心把加速器投给单位收益最大的边,再用饱和事件把逐个加速压成 O(n²) 批量执行。
贪心模拟python
提高2026-10-10 11:30
RainboyOJ3590
把棋盘压成五个列栈,按字典序做深度恰好为 n 的 DFS,配合逐层局面去重与无效移动剪枝,首个清空局面即字典序最小解。
搜索剪枝模拟python
提高2026-10-10 11:30
RainboyOJ3592
总检验值 y(W) 随阈值 W 单调不增:前缀和把一次求值压到 O(n+m),二分找到越过标准值 S 的分界点,答案只在分界点两侧产生。
二分答案前缀和单调性python
普及+/提高-2026-10-10 11:30
RainboyOJ3583
四类爬行卡片的数量只决定用牌组合,用牌总数又唯一决定乌龟的位置,于是把「顺序枚举」压成四维计数 DP。
-提高2026-10-10 11:30
RainboyOJ3580
按海拔降序 DP 求每格可达蓄水厂位集,无解时数不可达格,有解时把每个源点在最后一行的连续覆盖区间抽出做区间覆盖贪心。
动态规划位运算贪心网格python
提高2026-10-10 11:30
RainboyOJ3581
按怨气值从大到小逐条加入异监约束,带权并查集传递同监/异监关系,第一个被强制同监的边就是最小的最大冲突,O(M log M + M α(N))。
图论并查集带权并查集贪心python
普及+/提高-2026-10-10 11:30
RainboyOJ3578
按到 1 号系统的距离平方排序,用后缀最大值扫描分界点,O(N log N) 求两套系统工作半径平方和的最小值。
排序思维python
普及+/提高-2026-10-10 11:30
RainboyOJ3574
用正反两次可达性筛出既能从 1 到达、又能走到 n 的可行城市,再按价格 1→100 分层多源传播求出每个卖点的最低买价,取卖价减最低买价的最大值。
图论可达性多源BFSpython
普及+/提高-2026-10-10 11:30
RainboyOJ3575
行/列/宫三个 9 位掩码维护候选,DFS 每层选候选最少的空格(MRV),并用「剩余格都取最大候选数字」的逐层真实上界剪枝,遍历解集合取加权总分最大值。
搜索DFS回溯剪枝位运算数独
提高+/省选-2026-10-10 11:30
RainboyOJ3570
把 M=m1^m2 和每个 Si 都分解质因数,整除性只看 m1 的质数;t 秒后 Si^t 对质数 p 有 cnt·t 个,逐个质数取 ceil(e/cnt) 的最大值即为该细胞的等待时间。
-普及+/提高-2026-10-10 11:30
RainboyOJ3571
行程沿「马路−时刻」同余的对角线前进:按时间做一维 DP,对角线前缀和 O(1) 求行程金币,每条对角线单调队列维护长度不超过 p 的窗口最大值,总复杂度 O(nm)。
动态规划单调队列前缀和python
提高2026-10-10 11:30
RainboyOJ3567
把「不能进同一个栈」的值对建成冲突图,用二分图染色判定并决定分栈,再按 a<b<c<d 每步取最小合法操作,贪心模拟出字典序最小的操作序列。
贪心二分图栈模拟
提高+/省选-2026-10-10 11:30
RainboyOJ3564
按行号和 x+y 把两条单调路径同步分层,用行号对 (x1,x2) 做二维 DP,重合格只计一次好感度,O((m+n)·m²) 求最大好感度和。
动态规划
普及+/提高-2026-10-10 11:30
RainboyOJ3558
总得分按行拆开后各行独立:单行做区间 DP,dp[l][r] 表示还剩 [l,r] 未取的最高分,本次取数轮次为 m-r+l,权重 2^(m-r+l) 用左移表达。
动态规划区间DPpython
提高2026-10-10 11:30
RainboyOJ3559
两次 BFS 求直径,按到两端距离之和等于直径筛出直径结点;每个结点挂到最近的直径结点上,直径上枚举长度不超过 s 的核并用滑动窗口维护窗口内最大挂接深度,偏心距取左露出、右露出与挂深三者的最大值。
-提高2026-10-10 11:30
RainboyOJ3551
把二进制长度写成只与位数 m 和最高位有关的 k(m-1)+bitlen(d1),固定两者后低位是纯组合选择,再按最高位的二进制位数分段用 hockey-stick 恒等式求和。
数学组合计数进制NOIPpython
提高2026-10-10 11:30
RainboyOJ3549
把主件与它的至多两个附件组成家族,家族内枚举全部合法买法压成选项,家族间做一维倒序的分组背包,在预算内最大化价格与重要度乘积之和。
动态规划背包分组背包python
普及+/提高-2026-10-10 11:30
RainboyOJ3548
最优聚合顺序的最后一次聚合把连续段劈成两半,环拆链复制一倍后做区间 DP,对 N 个长度为 N 的窗口取最大值。
动态规划区间DP环形DPpython
普及+/提高-2026-10-10 11:30
RainboyOJ3550
按题面约定模拟作业调度:每台机器维护占用区间的有序表,为每个操作从左往右扫描出最前面的可行空档插入,输出所有工件的最后完成时刻。
模拟NOIP区间
提高2026-10-10 11:30
RainboyOJ3543
把等价判断化为多点代入:递归下降求值器对 a=0..3 分别求值,四次取值全相等的选项即与题干恒等。
表达式解析递归下降数学python
提高2026-10-10 11:30
RainboyOJ3542
先判定愿望图是覆盖全部人的单一整环,再把 2n 种候选环序折算成模 n 偏移直方图取众数,答案就是 n 减去最大坐对人数。
图论环检测置换python
提高2026-10-10 11:30
RainboyOJ3541
L 高达 10^9 却只有 100 块石子:无石子长段的 DP 值超过 H 后恒定,把每段截到 B = H + T 即可把桥压到约 2×10^4 再逐点 DP;S = T 时路径唯一,答案就是 S 的倍数石子数。
提高dppython
提高2026-10-10 11:30
RainboyOJ3539
把对所有 a 成立的条件改写成 10^k | n^a(n^L-1):含 2 或 5 但指数不足 k 的一侧直接判 -1,其余两侧分别求 n 模 2^k、5^k 的乘法阶取 lcm,阶从 Carmichael 函数逐质因数收缩得到。
数论快速幂同余python
普及+/提高-2026-10-10 11:30