题目列表

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

共 1485 题
OJ题号标题标签难度最后更新解析
RainboyOJ3046
用栈存未配对左括号的下标扫描一遍,失配的右括号成为断点,配对成功时用栈顶下标或断点算出以当前右括号结尾的最长合法子段。
-普及-2026-10-06 11:32
RainboyOJ3041
把 N 个模式串建成 Trie 并在每个结点记录结尾计数,每个询问沿路径走一遍累加经过结点的计数,O(总长度) 建树、每次询问 O(|T|) 回答。
Trie字典树字符串python
普及2026-10-06 11:32
RainboyOJ3023
递归构造盒子分形:每个 X 复制到 3×3 块网格的四个角和正中,逐级放大到 3^(n-1) 后按行输出。
递归分形
普及2026-10-06 11:28
RainboyOJ3033
同组成员在队列中必然连续,把队列拆成「小组块序列 + 组内序列」两层:入队查一次归属表再追到组尾,出队取首组队首,均摊 O(1)。
队列模拟python
普及2026-10-06 11:21
RainboyOJ3013
数轴上到 N 个点的距离和是下凸函数,最小值在中位数取到;排序后把最小与最大配对,每组贡献 B_{N+1-i}-B_i,即 O(N log N)。
贪心排序数学python
普及-2026-10-06 11:13
RainboyOJ3009
枚举拆分点 k,先用四塔搬走 k 个最小盘,再用三塔搬剩下 n-k 个大盘,递推 f(n)=min(2f(k)+2^{n-k}-1)。
递归递推数学python
普及2026-10-06 11:13
RainboyOJ3008
通过按位决策的回溯搜索树,依次枚举未使用的数字生成字典序排列。
递归搜索回溯
入门2026-10-06 11:13
RainboyOJ3006
每个整数「选 / 不选」构成一棵深度 n 的满二叉决策树,递归遍历即得全部 2^n 个子集;升序天然成立。
递归搜索位运算python
入门2026-10-06 10:57
RainboyOJ3007
从 start..n 中递归选数,强制后选数大于先选数,行内升序即天然字典序。
递归搜索组合枚举
普及-2026-10-06 10:54
RainboyOJ3005
枚举第一行 32 种开关操作,自顶向下由上一行灭灯状态唯一确定下一行操作,结合位运算快速递推与 6 步剪枝。
递推位运算状态压缩
普及2026-10-06 10:53
RainboyOJ2081
位掩码 DFS + 记忆化:换入字母必不等于原字母,剩余需求由棋盘唯一推出,8 邻域检查用位运算完成,字典序扩展直接得到最小方案并统计全部合法序列数。
搜索剪枝记忆化搜索位运算
普及2026-10-06 10:45
RainboyOJ2085
经典网格 DP:定义 dp[r][c] 为以 (r,c) 为右下角的全空最大正方形边长,由上方、左方、左上三方取 min 加一,O(N²) 求出答案。
动态规划网格 DP二维悬线
普及2026-10-06 10:44
RainboyOJ2079
起步方向和每个撞墙点的左/右转向构成决策树,回溯枚举所有走法并刷新走过的最大格数,撞上自己足迹即结束。
搜索DFS回溯网格python
普及-2026-10-06 10:38
RainboyOJ2061
完全背包可达性筛求最大凑不出的块数:gcd 不为 1 时直接输出 0,否则在 65536 内筛出所有可表示数。
完全背包数论打表
普及2026-10-06 10:37
RainboyOJ2060
按创作顺序逐首决策,dp[d][u] 表示已开 d 张 CD、最后一张已用 u 分钟时最多可选歌曲数的动态规划。
动态规划背包python
普及2026-10-06 10:36
RainboyOJ2058
利用前序首字符确定二叉树根节点并在中序遍历中划分左右子树,分治递归生成后序遍历。
二叉树递归分治
入门2026-10-06 10:36
RainboyOJ2046
把 n! 中每个 5 与一个偶数配成 10 消掉,推出 D(n)=D(n/5)·D(n%5)·2^(n/5) mod 10,递归 O(log n) 求阶乘末尾非零位。
-普及-2026-10-06 10:32
RainboyOJ2055
以每格为右下角的最大全 1 正方形边长做二维 DP,f[r][c]=min(上、左、左上)+1,再按边长分桶后缀和统计每个尺寸的正方形个数。
dp递推二维网格
普及-2026-10-06 10:29
RainboyOJ2040
基于稠密完全图邻接矩阵的 Prim 算法求最小生成树
图论最小生成树
普及-2026-10-06 10:10
RainboyOJ2043
可见边界只会落在矩形边上,坐标压缩出 (2N+1)² 网格后每格取代表点、自顶层向下找第一个覆盖矩形定色,按格面积累加得各颜色可见面积。
坐标压缩模拟
入门2026-10-06 10:09
RainboyOJ2035
把 John 与牛看成一个联合状态,最多 16000 种,模拟并在状态重现仍未相遇时输出 0。
-普及-2026-10-06 09:59
RainboyOJ2028
从 M+1 起线性搜索,用位运算 O(L) 判定循环数:各位非零互异,且按下标跳格恰好走遍所有位回到起点。
模拟枚举
普及-2026-10-06 09:51
RainboyOJ2029
四个按钮只关心奇偶共 16 种组合,按钮作用以 6 为周期,枚举前 6 盏灯的翻转图案并用最少按压次数与 C 同奇偶判定可行性。
枚举位运算周期性
普及2026-10-06 09:51
RainboyOJ2027
将连续整数集合二等分转化为0-1背包计数DP,最后利用对称性除以2统计无序划分数。
动态规划背包问题计数DP
普及-2026-10-06 09:51
RainboyOJ2025
最优解首项必为 0(整体异或最小元),故按数值字典序逐位贪心:每次从上一个编码 +1 起扫描,接上第一个与已选集合两两 popcount(x xor y) >= D 的编码,O(N^2·2^B)。
贪心位运算构造python
普及-2026-10-06 09:46
RainboyOJ2024
G≤15 时枚举饲料子集,按份数递增扫描,首个满足每种维生素总量均不低于需求的方案即最小解;子集总含量用最低位增量递推避免重复求和。
枚举位运算记忆化USACO
普及-2026-10-06 09:46
RainboyOJ2026
每个十进制数位的罗马写法唯一固定(含 IV、IX、XC 等减法组合),按千/百/十/个位四张表逐页拼接 1..N 的罗马表示并累计 7 个字符出现次数。
入门模拟查表python
入门2026-10-06 09:46
RainboyOJ2023
按数字个数划分目标区间,贪心做两两直接对换,剩余三元环每个花两次交换,求最少交换次数。
贪心置换
普及-2026-10-06 09:46
RainboyOJ2018
利用偶数位回文数必为11的倍数的性质,只构造奇数位回文数与11并在区间内试除判定素数。
数论素数回文数构造
普及-2026-10-06 09:45
RainboyOJ2020
N 皇后搜索:逐行放置,用列与两条对角线的位掩码 O(1) 判冲突,按列号升序展开保证字典序,输出前 3 个解与总解数。
搜索回溯位运算python
普及-2026-10-06 09:41
RainboyOJ2019
由 {2,3,5,7} 逐位接 {1,3,7,9} 生长,每次试除判素,保留仍是质数的前缀。
数论素数搜索usacopython
普及-2026-10-06 09:41
RainboyOJ2022
枚举全部分数,用 gcd 约成最简后去重,再按分数值升序排序输出,即法里序列的构造。
入门数学排序python
入门2026-10-06 09:40
RainboyOJ2014
枚举 4 块矩形的全排列与横竖方向,对 6 种基本铺放拓扑用 O(1) 宽高公式算最小包围盒,去重输出所有边长解。
枚举模拟几何
普及-2026-10-06 09:36
RainboyOJ2016
把三个桶的牛奶量当作状态、完全灌注当作边,在至多 441 个节点的隐式有向图上做可达性遍历,收集 A 空时的 C 值并升序输出。
搜索图论BFSpython
普及-2026-10-06 09:33
RainboyOJ2013
每种移动做 4 次等于没做,只需枚举 4^9 个次数向量;影响矩阵模 4 可逆,解唯一,找到即可输出。
枚举位运算模拟python
普及-2026-10-06 09:33
RainboyOJ2017
逐层滚动一维 dp:走到当前层第 j 个数的最大和只由上一层正上方与左上方两格决定,末行最大值即答案。
动态规划usacopython
入门2026-10-06 09:32
RainboyOJ2007
枚举 1~300 每个数的平方,用短除法把平方写成 B 进制串判回文,是则输出原数和平方的 B 进制串。
枚举模拟进制转换回文python
入门2026-10-06 09:26
RainboyOJ2012
枚举由给定数字拼成的三位被乘数与两位乘数,只校验它们算出的三条乘积:两条部分积各三位、最终积四位,且每位数字都属于给定集合,统计成立的牛式个数。
枚举模拟python
入门2026-10-06 09:25
RainboyOJ2008
从 S+1 开始逐个向上枚举,短除法取余得到各进制数码并判断回文,统计 2~10 进制中回文次数不少于 2 的数,取前 N 个输出。
入门枚举进制转换回文数usacopython
入门2026-10-06 09:25
RainboyOJ2010
一整块板覆盖全部牛棚后,贪心地在最大的 C−M 个牛棚间隙处切开,砍掉的总长度恰好等于最小木板总长。
贪心排序python
入门2026-10-06 09:25
RainboyOJ2005
用旋转原语与行反转原语复合出全部 8 种候选图案,按序号从小到大与目标逐表比较,取第一个匹配的序号。
模拟
入门2026-10-06 09:21
RainboyOJ2006
把单词按九键键盘映射成数字串,顺序扫描字典筛选出等于目标编号的单词。
模拟字符串
入门2026-10-06 09:19
RainboyOJ2003
把环接成两倍直线,预处理红/蓝连续段的两个端点;每个断点用 O(1) 查表算出两侧能收的珠数。
枚举贪心前缀和python
普及-2026-10-06 09:19
RainboyOJ2004
把每个农民的挤奶时段看成闭区间,按左端点排序后单趟扫描合并成极大连通块,最长块即为最长有奶时长,相邻块间距最大值即为最长空档。
排序区间合并贪心
普及-2026-10-06 09:17
RainboyOJ2002
按月递推,利用当月天数模 7 转移下月 13 号的星期,统计 n 年内各星期出现次数。
模拟日期与日历
入门2026-10-06 09:05
RainboyOJ20010
排序后每轮把最慢两只送过桥:最快往返接送与最快次快结伴两种送法取小,剩三只内直接收尾,O(n log n)。
贪心排序python
普及-2026-10-06 08:59
RainboyOJ20009
排序后双指针:每趟让最重的史莱姆与最轻的能同乘就配对,趟数即最短时间,O(n log n)。
入门贪心排序python
入门2026-10-06 08:59
RainboyOJ2001
用 map 把名字映射为下标,按送礼顺序模拟:人均 m/cnt、余数自留,最后按读入顺序输出每人净额。
入门模拟字符串哈希表python
入门2026-10-06 08:59
RainboyOJ20007
碰撞掉头等价于互相穿过并交换编号:终态位置多重集合就是各自直走 T 秒的结果,两次排序后按初始位置排名对应状态,再按输入编号还原输出。
模拟排序思维
普及-2026-10-06 08:58
RainboyOJ20006
用双引号把全文切成 n+1 段,再与无限交替的左、右 TeX 引号对拼接:第奇数个双引号换左引号、第偶数个换右引号。
入门字符串模拟python
入门2026-10-06 02:18
RainboyOJ20004
第 i 次行走的方向只由方向块编号 i/k 的奇偶决定,把每次位移按方向附 ± 号求和,最后对 n 取一次模即得终点,O(p)。
入门模拟数学python
入门2026-10-06 02:12
RainboyOJ20001
把数字串反转后删去前导 0 输出,字符串反转即可,无需任何算术运算。
入门字符串python
入门2026-10-06 02:11
RainboyOJ20002
允许石板伸出边界时,铺满 n×m 广场最少需要 ⌈n/a⌉×⌈m/a⌉ 块 a×a 石板。
数学整除
入门2026-10-06 02:11
RainboyOJ20003
把数字当字符串,按 a+b > b+a 降序排序后拼接,即得最大整数。
贪心排序字符串python
普及-2026-10-06 02:11
RainboyOJ20000
等比数列首次越过 4096MB 阈值的分钟数:取对数化为闭式上取整,再用精确乘法修正临界。
入门数学浮点数python
入门2026-10-06 02:06
RainboyOJ2000
将名字中的字母映射为 1 到 26 的数值并累乘模 47,判断两个名字所得模数是否相等。
模拟字符串
入门2026-10-06 02:04
RainboyOJ1679
把每一行的种植状态压成 N 位掩码,筛掉行内水平相邻与贫瘠格后逐行做计数 DP,转移时要求上下两行掩码按位与为 0。
动态规划状态压缩位运算
普及-2026-10-06 02:02
RainboyOJ1681
排序去重建立值表,对每个数二分求名次完成离散化,O(n log n)。
离散化二分查找排序
普及-2026-10-06 02:00
RainboyOJ1674
约瑟夫报数变体:女生有 2 次机会,用循环队列带机会计数直接模拟,O(mn) 出解。
模拟约瑟夫问题队列
入门2026-10-06 01:49
RainboyOJ1673
边扫边用数组记下每种颜色首次出现的笔编号,第二次遇到同色即输出两个编号,扫完无重复则输出 different。
字符串哈希表python
入门2026-10-06 01:45