题目列表

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

共 1485 题
OJ题号标题标签难度最后更新解析
RainboyOJ2082
按桶数递增做升序字典序组合 DFS,用增量位集完全背包验证子集能否恰好量出 Q,首个成功组合即桶数最少且字典序最小的答案。
USACO搜索剪枝位运算背包
提高2026-10-07 13:50
RainboyOJ2080
把电线总长写成点到线段距离之和,用线段距离的凸性证明目标函数凸,再嵌套三分:内层固定 x 对 y 三分、外层对 x 三分。
计算几何三分凸函数浮点数usacopython
提高2026-10-07 13:50
RainboyOJ2083
通过图层栈维护窗体层级顺序,并在查询时利用矩形切割法依次剪除上层窗体的遮挡区域,精确统计可见面积。
计算几何模拟矩形切割
提高+/省选-2026-10-07 13:50
RainboyOJ2076
把最短围栏转化为点集的凸包周长,用 Andrew 单调链按叉积弹出右转与共线点,再对闭合顶点序列求边长之和
计算几何凸包排序python
普及+/提高-2026-10-07 13:50
RainboyOJ2077
8 连通洪填提取每个星座,对点集做 8 种旋转/翻转的平移归一化取最小形态作为形状指纹,用 dict 把同指纹星座统一标成同一小写字母。
-普及+/提高-2026-10-07 13:50
RainboyOJ2078
通过相邻音符差分将转调转化为相同子串匹配,结合二分答案与滚动哈希在 O(N log N) 时间内求解最长不重叠重复子串。
哈希二分字符串
提高2026-10-07 13:50
RainboyOJ2074
把停运卡车建模成最小割:容量改 c·K+1 使“先压总损失、再压边数”,Dinic 求最大流后逐边删测流找出割边。
pythonusaco图论网络流最小割
提高+/省选-2026-10-07 13:50
RainboyOJ2075
通过极值坐标还原矩形边框边界,由边框覆盖关系构建有向图,回溯搜索输出所有字典序拓扑序。
拓扑排序回溯搜索图论
提高2026-10-07 13:50
RainboyOJ2072
把卡片与单词都压成字母掩码,先用一次按位与淘汰含卡片外字母的单词,再对少量候选按 26 维用量向量精筛,最后 O(k²) 枚举词对取最高分。
枚举字符串位运算剪枝
提高2026-10-07 13:50
RainboyOJ2073
通过棋子单向移动与逆序对不变性确定最少步数 (N+1)^2-1,结合原下标升序枚举的 DFS 回溯搜索求出字典序最小解。
DFS回溯贪心思维
提高2026-10-07 13:50
RainboyOJ2071
通过删点 BFS 判定有向图必经点,再结合正向遍历验证前后子图无点集交集以确定分割点
图论BFS连通性
普及+/提高-2026-10-07 13:50
RainboyOJ2067
两阶段流水车间:用事件小根堆求 A、B 车间各自的最优完工时刻向量,再把 A 完工时刻降序与 B 槽位升序反向配对得到最小总工期。
贪心堆模拟python
普及+/提高-2026-10-07 13:50
RainboyOJ2068
枚举前、后齿轮组合:3 倍约束用整数乘法定向剪枝,把传动比按 lcm 标度改成整数后精确比方差,并列按字典序。
搜索枚举剪枝数学
普及+/提高-2026-10-07 13:50
RainboyOJ2059
用 Pick 定理数三角形 (0,0),(n,m),(p,0) 内部格点:2S=pm,边界 B=gcd(n,m)+gcd(|p-n|,m)+p。
数学计算几何Pick定理数论gcdpython
普及+/提高-2026-10-07 13:50
RainboyOJ2069
动态规划求解最长严格下降子序列(LDS),并通过倒序扫描结合哈希集合跳过相同前驱数值实现不同方案的去重计数。
动态规划最长下降子序列计数DP去重
普及+/提高-2026-10-07 13:50
RainboyOJ2063
端点用它上面相接的篱笆标号集合编号,篱笆是有权边,区域就是环;枚举每条边禁掉后跑 Dijkstra 求两端最短路,w+dist 取最小。
图论最短路Dijkstra堆python
提高2026-10-07 13:50
RainboyOJ2064
逆向枚举每步加密的 (C, O, W) 三元组做记忆化搜索,用字母守恒、首 C/末 W 固定、连续段必为目标子串、邻接修复下界四重剪枝判断能否还原目标句。
搜索DFS剪枝字符串python
普及+/提高-2026-10-07 13:50
RainboyOJ2066
将奶牛与牛栏的分配建模为二分图最大匹配,采用匈牙利算法(DFS 增广路)求解最大匹配数。
图论二分图匹配匈牙利算法
普及+/提高-2026-10-07 13:50
RainboyOJ2065
把排水沟建成有向容量网络,用 Dinic 算法在残量网络上 BFS 分层、DFS 沿层次图增广,反向边提供反悔机制,求水潭到小溪的最大流。
网络流最大流Dinic
普及+/提高-2026-10-07 13:50
RainboyOJ2057
用观察者到各顶点的视线把每条栅栏切成遮挡状态不变的段,段中点做整数叉积跨立试验,判定哪些栅栏可见。
-提高2026-10-07 13:50
RainboyOJ2062
二分答案转化为装箱判定问题,利用大件优先、相同元素去重和废料上限剪枝进行深搜回溯。
二分答案深度优先搜索剪枝
提高+/省选-2026-10-07 13:50
RainboyOJ2054
枚举集合点 t,所有骑士的步数和为 ΣD_k(t);国王要么自己走到 t,要么由某位骑士绕路接上,接人的增量用一次多源 BFS 化成 E_k(t)=min_u(D_k(u)+K(u)+D(u,t)) 后取最小。
搜索BFS网格枚举python
提高2026-10-07 13:50
RainboyOJ2056
双人从序列两端轮流取数的零和博弈,用区间 DP 求「当前行动者净胜分」g(l,r)=max(a[l]-g(l+1,r), a[r]-g(l,r-1)),再由 D 与总和还原两人得分。
dp区间dp博弈
普及+/提高-2026-10-07 13:50
RainboyOJ2052
每条栅栏恰好走一次即欧拉路径:最小奇点出发,邻接表按邻居排序后贪心走最小邻居,迭代 Hierholzer 逆后序输出,得到字典序最小解。
图论欧拉路径贪心python
普及+/提高-2026-10-07 13:50
RainboyOJ2053
把购物清单压成不超过 5 维的剩余需求向量,用记忆化搜索在该状态图上求最短路:每次转移要么按原价买一件,要么套用一个不超过剩余需求的优惠套餐。
动态规划记忆化搜索背包python
普及+/提高-2026-10-07 13:50
RainboyOJ2048
五个轮子的挡光图案以 360 秒为周期,故只需枚举 0..359 秒;把 360 个角度压成 360 位掩码,整轮旋转即环上移位,五轮求交即按位与。
模拟枚举位运算python
普及+/提高-2026-10-07 13:50
RainboyOJ2049
把「配出目标比例」写成 a·F1+b·F2+c·F3=k·T 的整数方程,三种饲料份数都小于 100,于是按份数总和递增枚举 a+b+c,第一组命中即用量最少。
枚举数学比例python
普及-2026-10-07 13:50
RainboyOJ2050
把 8 个格子的颜色序列当作状态,三种操作是三个置换;在 8!=40320 个状态上做 BFS,按 A、B、C 的顺序扩展,目标第一次被生成就是最短且字典序最小的操作串。
搜索BFS队列python
普及+/提高-2026-10-07 13:50
RainboyOJ2051
枚举每个牧场作为放糖点,从该点跑一次堆优化 Dijkstra,利用无向图最短路的对称性直接得到所有牛的路程和,取最小值。
图论最短路dijkstra枚举
普及2026-10-07 13:50
RainboyOJ2045
把“某邮资能否贴出”换成“最少需要几张”,用一个大整数的第 v 位表示邮资 v 可达;每轮对所有面值做左移按位或,重复至多 K 次后数连续 1 前缀。
动态规划背包完全背包位运算python
普及+/提高-2026-10-07 13:50
RainboyOJ2047
通过动态规划预处理限定1个数的01串数量,再自高向低逐位试填分支定位第I大二进制串。
动态规划组合数学数位DP贪心
普及+/提高-2026-10-07 13:50
RainboyOJ2041
完全背包:dp[t] 表示限时 t 的最大得分,容量正序使种类可重复选取。
动态规划背包完全背包python
普及-2026-10-07 13:50
RainboyOJ2042
把每个素数看成一个生产者,只维护它乘以第几个丑数;用小根堆取 K 个候选的最小值,打平者同步推进去重,O(N log K)。
动态规划多路归并堆python
普及+/提高-2026-10-07 13:50
RainboyOJ2044
滑动窗口统计长度在 [A, B] 内的子串频次,结合分桶与多关键字排序格式化输出高频模式串。
字符串哈希表排序
普及+/提高-2026-10-07 13:50
RainboyOJ2036
把迷宫字符画补一圈空白后,从最外圈多源 BFS 灌水:每个格心的字符距离折半就是到最近出口的步数,取最大值,一次 O(WH) 求出最坏点。
BFSflood fill网格最短路usacopython
普及+/提高-2026-10-07 13:50
RainboyOJ2038
Floyd 一次算出各牧场内全源最短路,得每点偏心距与牧场直径;枚举跨牧场点对,新直径取 max(两边偏心距+欧氏新边, 原直径较大者) 的最小值。
图论最短路Floyd连通块
普及2026-10-07 13:50
RainboyOJ2039
模拟竖式长除法,用字典登记余数第一次出现的位置:余数重复即找到循环节,余数变 0 即有限小数,总步数不超过分母。
模拟数学python
普及-2026-10-07 13:50
RainboyOJ2037
52 个牧场的无向带权图,把源点从每只母牛换成谷仓,一次 Dijkstra 得到 A..Y 到 Z 的最短距离,取最小者。
图论最短路Dijkstra堆python
普及-2026-10-07 13:50
RainboyOJ2033
完全背包计数:外层按面值分组、金额正序执行 ways[j] += ways[j-c],统计凑出金额 N 的组合数。
动态规划完全背包组合计数python
普及-2026-10-07 13:50
RainboyOJ2034
持股累加后用不动点迭代求控制闭包:每轮把所有已控制公司持有的股份汇总,超过 50% 即纳入控制,直到不再新增,O(V^3) 内出全部控制对。
图论传递闭包不动点模拟usacopython
普及+/提高-2026-10-07 13:50
RainboyOJ2031
用 L_h[m] 记「内部结点数 m、高度不超过 h」的家谱数,一次卷积抬高一层高度上界,最后 L_K[m]-L_{K-1}[m] 就是高度恰为 K 的个数,O(K·N²)。
动态规划计数组合计数递推树usacopython
普及+/提高-2026-10-07 13:50
RainboyOJ2032
在 1..N 的数列每两数间插入 +、- 或空格(空格表示拼接),枚举全部 3^(N-1) 种符号方案,按 ASCII 序输出和为 0 的表达式。
搜索枚举python
普及-2026-10-07 13:50
RainboyOJ2030
按元素长度枚举与哈希集合判断的前缀动态规划,在线性时间内求解最长可分解前缀
动态规划字符串
普及+/提高-2026-10-07 13:50
RainboyOJ2021
把格子看成顶点、公共边无墙处连边,一次洪水填充求出房间数、最大房间和各房间编号;再扫每个右邻/下邻房间号不同的位置枚举所有可拆墙,用元组(合并大小, -2x, 2y)一次比较就把最大值与「先西后南」的平局规则一起解决,O(MN)。
图论连通块洪水填充网格python
普及+/提高-2026-10-07 13:50
RainboyOJ2015
通过预处理双平方数集合与布尔查找表,枚举首项与次项确定公差,结合末项前置剪枝快速找出所有满足条件的等差数列。
暴力枚举剪枝哈希/打表
普及+/提高-2026-10-07 13:50
RainboyOJ2011
提取文本中的有效英文字母并记录原始索引,利用 Manacher 算法在 O(N) 线性时间内找出最长回文子串并在原串中切片输出。
字符串Manacher算法
普及+/提高-2026-10-07 13:50
RainboyOJ1668
取一子或合并两堆的取石子博弈:按堆大小与石子总数奇偶性分类讨论必败态,k1=大小1堆数、(s+n) 奇偶为核心判据。
博弈论分类讨论
省选/NOI-2026-10-07 13:50
RainboyOJ1677
题面是 2×N 骨牌覆盖的斐波那契递推;随题测试数据实为整数划分,主解改用完全背包计数以匹配评测语义。
动态规划递推计数完全背包python
普及+/提高-2026-10-07 13:50
RainboyOJ1676
把 n 拆成恰好 k 个正整数之和的方案数,用 (剩余和, 剩余段数, 下一段下界) 三元组记忆化搜索。
动态规划记忆化搜索整数划分数学递归
普及-2026-10-07 13:50
RainboyOJ1678
倒序 DP 求出 g[i]=以 a[i] 开头的最长不下降子序列长度,再逐位贪心:每步在「值不小于已选末尾且 g 够长」的候选中取值最小者,得到字典序最小的最优方案。
动态规划最长上升子序列线性DP贪心构造python
普及+/提高-2026-10-07 13:50
RainboyOJ1680
将打乱的前缀和与后缀和升序排序,利用正整数单调性双向剪枝搜索还原数列,优先左侧扩展保证字典序最小。
搜索剪枝双指针
提高2026-10-07 13:50
RainboyOJ1670
区间博弈DP:通过推导使子区间成为必败态的两端边界石子数唯一解,O(n^2)判断全局胜负
博弈论动态规划区间 DP
省选/NOI-2026-10-07 13:50
RainboyOJ1662
阶梯切割方案数是卡特兰数 C(2n,n)/(n+1):以最后一刀位置递归拆解,得到卡特兰递推,用 math.comb 精确大整数一次算出。
组合数学卡特兰数递推
提高+/省选-2026-10-07 13:50
RainboyOJ1667
取棒动作让先手总能开启博弈战场:盒中存在异或和为 0 的非空子集(GF(2) 线性相关)则先手必胜,用线性基 O(N·30) 判定。
博弈论Nim线性基组合游戏python
提高+/省选-2026-10-07 13:50
RainboyOJ1666
先手胜负由各堆石子数的 SG 值异或和决定:S=0 必败,否则找出使 SG(A_i-t)=S^SG(A_i) 的字典序最小一步。
博弈SG 函数数学python
提高2026-10-07 13:50
RainboyOJ1669
使用 SG 函数将各堆有限制取石子游戏转化为等价 Nim 堆,预处理 mex 后异或求值判定胜负。
博弈论SG函数
提高2026-10-07 13:50
RainboyOJ1649
把二进制位数约束按 kn 与 w 的关系切成三档:全合法档用组合数直接求和,全超长档截断,临界档只卡首位 d1 < 2^{w-k(n-1)}。
数学组合计数组合数进制
普及+/提高-2026-10-07 13:50
RainboyOJ1664
Nim 博弈:把各堆石子数按位异或,先手必胜当且仅当异或和(Nim 和)非零,O(N) 判定。
博弈论数学
普及2026-10-07 13:50
RainboyOJ1660
网格路径计数不越过对角线:反射法推出 C(n+m,m)-C(n+m,m-1),C++ 大整数精确输出。
数学组合计数卡特兰数python
普及2026-10-07 13:50
RainboyOJ1659
扩展 Lucas 定理(exLucas)求组合数模任意合数:按质因数幂分拆模数,抽干 p 因子后分块阶乘求 C mod p^k,再用 CRT 拼回答案。
数论扩展 Lucas中国剩余定理组合数
省选/NOI-2026-10-07 13:50