题目列表

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

共 3718 题
OJ题号标题标签难度最后更新解析
RainboyOJ5019
通过步长为 2 的循环直接遍历并输出偶数。特别注意 n=1 时没有偶数,应输出 0 字节空答案。
循环结构数学
入门2026-10-08 16:16
RainboyOJ3161
求含不超过 M 条割边的 N 节点无向连通图数量,用 DP 分解边双连通分量计数
动态规划组合数学图论计数连通图
提高+/省选-2026-10-08 16:08
RainboyOJ5011
通过贪心和线性动态规划,在满足分段和不下降的情况下尽可能使末段和最小,从而获得最大段数。
贪心动态规划线性 DP
提高2026-10-08 16:07
RainboyOJ5012
二分答案。火球只向左溅射,从右往左贪心放置。将溅射伤害用代数展开后,利用滑动窗口维护三项和实现 O(1) 转移。
二分答案贪心滑动窗口
提高+/省选-2026-10-08 16:04
RainboyOJ1374
整个图每条街道都是双车道,相当于一对正反有向边,天然存在欧拉回路,只计算所有道路长度之和乘以2除以铲雪速度即可。
欧拉回路图论贪心
普及-2026-10-08 16:03
RainboyOJ5014
相遇折返等价于互相穿过并交换身份,名次永不改变,问题化为在两个有序数组的并中二分求第 r 小值
二分排序思维
提高+/省选-2026-10-08 14:40
RainboyOJ1752
求网格中最大不含给定建筑的正方形边长,转化为二分答案和扫描线求矩形面积并判定是否盖满可行域。
二分线段树扫描线
提高+/省选-2026-10-08 12:43
RainboyOJ5004
通过维护差分数组的两个特定系数的树状数组,实现在 $O(\log n)$ 的时间复杂度内高效进行区间的加法修改与求和查询操作。
树状数组差分数据结构
提高2026-10-08 11:10
RainboyOJ1738
把编号看成弧、把弧的起点终点看成新图的顶点,座位圈等价于该图的欧拉回路,用 Hierholzer 迭代求出一条弧序列。
图论欧拉回路构造python
提高+/省选-2026-10-08 10:20
RainboyOJ3058
通过分析元素不能在同一栈的冲突条件,建立二分图进行染色判定,并基于字典序贪心模拟操作序列。
栈二分图构造
提高+/省选-2026-10-08 10:05
RainboyOJ5007
二分答案 + 可行性判定(贪心)。二分能整理出多少副牌,计算所需特殊牌数量验证可行性。
二分答案贪心
普及+/提高-2026-10-08 09:07
RainboyOJ5008
使用按截止时间排序配合小根堆反悔贪心算法来求解最大奖励任务调度问题。
贪心优先队列反悔贪心
普及2026-10-08 09:07
RainboyOJ5009
将到达楼层等价为每栋首层强制取,剩余额外层加入小根堆,维护最大价值
贪心优先队列python
提高+/省选-2026-10-08 09:05
RainboyOJ5006
非常基础的输出练习,直接输出指定的字符串。
基础输出
入门2026-10-08 09:03
RainboyOJ5005
使用简单的 for 循环计算 1 到 n 的累加和
循环结构
入门2026-10-08 09:02
RainboyOJ1762
nand 逐位独立,一段点序列诱导的函数只需 F(0^k) 与 F(1^k) 两个掩码即可刻画;函数复合满足结合律,于是用线段树维护正反两个方向的复合,树链剖分把路径拆成 O(log n) 段按序拼接。
树链剖分线段树位运算python
提高+/省选-2026-10-08 08:51
RainboyOJ1788
把「能看到的最高的山」归约为两侧斜率最大的点,再用单调栈求出每个山顶转向的第一站,沿链递推步数,整体 O(n)。
单调栈几何贪心python
提高+/省选-2026-10-08 08:10
RainboyOJ2142
把树以 1 为根取出父亲先于儿子的序,倒序自底向上贪心:节点与父亲都还空着就把这条边配掉,O(n) 得到树的最大匹配数。
树贪心匹配python
普及+/提高-2026-10-08 07:55
RainboyOJ2141
员工关系是一棵以总经理为根的树,先从根 BFS 得到父先于子的访问序,再逆序把孩子子树大小累加给父亲,O(n) 得每人下属数。
树DFSBFSpython
普及-2026-10-08 07:52
RainboyOJ2128
把十进制大数看成以 10 为底的多项式,用 FFT 在 O(n log n) 内求系数卷积,再从低位到高位统一进位得到乘积。
高精度FFT多项式python
提高2026-10-08 07:50
RainboyOJ2127
把两个不超过 100 位的非负整数按个位对齐倒序存进整型数组,逐位相加并传递进位,最后处理最高位进位并倒序输出。
高精度模拟python
普及-2026-10-08 07:45
RainboyOJ2126
通道忽略方向后是树,有向定向必有终点,答案即出度为 0 的唯一加工站,多于一个就无解。
图论树出度python
普及-2026-10-08 07:42
RainboyOJ2125
有向图从 1 号点出发,邻接表按编号升序排序后分别做先序 DFS 与 BFS,输出两行可达文章序列。
图论深度优先搜索广度优先搜索python
普及-2026-10-08 07:39
RainboyOJ2124
反向建图后从 N 到 1 倒序 BFS 染色,每个点首次被覆盖时的起点编号就是它能到达的最大编号点,总体 O(N+M)。
图论反向建图BFSpython
普及+/提高-2026-10-08 07:36
RainboyOJ2123
有向图上对每个起点各跑一次 BFS 预处理全源可达矩阵,此后每次询问 O(1) 查表回答 Yes/No。
图论BFS传递闭包python
普及-2026-10-08 07:33
RainboyOJ2110
用奇偶性先判定奇数 n 无解,偶数 n 固定起点 1 后 DFS 回溯,靠相邻和的素数剪枝找到任意一组解。
搜索回溯python
普及-2026-10-08 07:30
RainboyOJ2070
先枚举两条共享中心点的对角线锁死四角与中心,再按首末位分桶枚举四条边框线,内部四格由行/列数位和反推,最后校验第 2 行与第 2 列。
搜索数论剪枝python
提高+/省选-2026-10-08 07:07
RainboyOJ2009
把农民按单价升序排序后线性扫描,能整批拿就整批拿,最后一位只取凑满需求的部分,得到最小花费。
贪心排序python
入门2026-10-08 07:03
RainboyOJ1994
把 hh:mm:ss 折成秒,对 5 种乐器各开一个差分数组做区间加一,前缀和还原每秒演奏状态,询问时按 PVCDB 拼字符。
差分前缀和python
普及-2026-10-08 06:59
RainboyOJ1993
线段树每个节点只存区间长度与亮灯数,整段取反就是 sum→len-sum,懒标记异或累加,于是区间取反与区间求和都降到 O(log N)。
数据结构线段树懒标记区间取反区间求和python
普及+/提高-2026-10-08 06:55
RainboyOJ1992
把序列摊到足够长的坐标轴上,用树状数组记坐标占用:Top/Bottom 占两端空位,Insert 只换坐标,Ask/Query 化为前缀和与第 k 个 1。
树状数组平衡树python
提高+/省选-2026-10-08 06:46
RainboyOJ1839
五项奖学金条件互相独立可叠加,边读边把每人奖金累加出来;取最大值时用严格大于,并列就自然留下最早出现的那个学生。
模拟枚举python
入门2026-10-08 06:45
RainboyOJ1819
把字符串集合建成 Trie,在树上自底向上求先手「能否强行赢本轮」与「能否强行输本轮」两个布尔量,再按 k 的奇偶给出答案。
Trie博弈论树形DPpython
普及+/提高-2026-10-08 06:41
RainboyOJ1818
把双方偏好统一成二元组 (Bob, -Alice) 的字典序,在树上按深度奇偶交替做极小极大 DP,自底向上 O(n) 合并子树。
树形DP博弈论极小极大搜索python
普及+/提高-2026-10-08 06:36
RainboyOJ1817
连通块数 = 点数 - 边数,把 K_A-K_B 化成 Σ(2-d_i)x_i 的线性形式,博弈塌缩成按权值降序交替抢点。
数学贪心博弈python
提高2026-10-08 06:35
RainboyOJ1816
记 M=a+b,先处理能一步取空的堆;其余局面对每堆按 x mod M 的余数分段求 Grundy 值,异或和非零则先手胜。
博弈论数学python
提高+/省选-2026-10-08 06:24
RainboyOJ1815
一图上的组合游戏,石子各自独立,故用 SG 定理;按颜色分组的后继 SG 异或张成 F_2 线性空间,逆拓扑序插入线性基求 mex 得每个点的 SG。
博弈论SG函数线性基拓扑排序python
提高+/省选-2026-10-08 06:19
RainboyOJ1814
把得分 2^{r+c} 按二项式展成「黑行/黑列子集」的计数,再用期望线性性枚举指定的 i 行 j 列全黑,用超几何概率 P(t)=∏(k−p)/(m−p) 在 O(n^2) 内求和。
数学期望组合数学python
提高+/省选-2026-10-08 06:15
RainboyOJ1812
按直线的本原方向分类计数,把相邻点距离约束化为指标差下限,再用插空法算组合数,模 1e9 非质数故用杨辉三角。
数学组合数学计数python
提高+/省选-2026-10-08 06:12
RainboyOJ1813
1 到 n 最短路为 n-1 时必经全部点,链固定后只禁 C(n-1,2) 条捷径边,答案 = (n-2)!·C(n²-(n-1)(n-2)/2+m-n, m-n+1)。
数学组合数学计数python
提高+/省选-2026-10-08 06:12
RainboyOJ1811
把展开式的字符拆成单项式与结构两部分,用对称性把前者求和成 2^(n-1)(n+D),化简得闭形式 O(log n) 求解。
数学组合数学快速幂python
普及+/提高-2026-10-08 04:55
RainboyOJ1810
路径受 y≤x 的山脊界限约束,用反射原理 O(1) 求两点间受限路径数,再按首次踩到的坑做容斥 DP,复杂度 O(N+C^2)。
数学组合数学容斥反射原理
普及+/提高-2026-10-08 04:53
RainboyOJ1808
先用短周期模 10^4 暴力收集候选下标,再借 pi(10^k) 每层扩大 10 倍的性质逐层扩散乘 10 并用倍增法验证,筛到 10^13 后取最小下标。
数学数论矩阵二分
提高+/省选-2026-10-08 04:32
RainboyOJ1807
由数根与模 9 同余把 V=x·D(x) 拆成九族等差数列,按 V mod 9 归并并做一次容斥,单次询问 O(1) 前缀相减。
数学数论同余python
普及+/提高-2026-10-08 04:27
RainboyOJ1806
三问合一:快速幂求 y^z mod P;扩展 BSGS 求 y^x≡z (mod P) 的最小非负解;扩展 Lucas 拆质数幂加 CRT 求 C(z,y) mod P。
数学数论快速幂BSGS扩展卢卡斯中国剩余定理python
提高+/省选-2026-10-08 04:23
RainboyOJ1805
把 popcount 按位拆成 floor 差分,用类欧几里得在 O(log) 内求出每位的 1 的个数,全程 __int128 防溢出。
数学类欧几里得位运算python
提高+/省选-2026-10-08 04:20
RainboyOJ1804
合数 n 的最大真因数是 n 除以它的最小质因子,于是求区间内合数按最小质因子分组后的商之和,用 min_25 筛在 O(n^{3/4}/log n) 内算出前缀和再作差。
数学数论筛法Min_25 筛python
提高+/省选-2026-10-08 04:13
RainboyOJ1801
由 gcd≤a-b≤a xor b 的夹逼得等号链 c=gcd=a-b=a xor b,于是枚举公约数 c 与其倍数 a,验证 b+c 相加不进位,O(n log n) 数完。
数学数论位运算枚举python
普及+/提高-2026-10-08 04:05
RainboyOJ1802
把 2..n 按大质因子分组,小质因子(恰 8 个)压成掩码做状压 DP,同组只能整组给同一人,用 g1+g2-dp 容斥合并。
动态规划状态压缩数论数学python
提高+/省选-2026-10-08 04:05
RainboyOJ1803
置换的排数等于其阶加一,阶是各轮换长度的 lcm。由唯一分解定理,一个可达 lcm 等价于一组互不相同的素数幂且幂和不超过 N,按素数组做有界背包计数即可。
数学动态规划背包数论素数筛python
提高+/省选-2026-10-08 04:05
RainboyOJ1800
总和 S 的奇偶性把答案锁死在 -1/1/2/3 四种:S 为质数取 1,S 拆成两质数取 2,否则用哥德巴赫弱形式取 3,再用从大到小的贪心把目标和落到具体数上。
数学质数哥德巴赫猜想构造python
提高2026-10-08 03:54
RainboyOJ1799
每个 m 元子集恰好给出 2 个合法数列,答案为 2^(n+1)-n^2-n-2;n 有 5000 位,按字符串读入并用费马小定理降幂。
数学组合计数费马小定理大整数python
提高+/省选-2026-10-08 03:52
RainboyOJ1798
把分式线性递推看作莫比乌斯变换,用齐次坐标转成 2x2 矩阵,矩阵快速幂求第 n 项,扩欧求逆元。
数学矩阵快速幂莫比乌斯变换逆元python
提高2026-10-08 03:50
RainboyOJ1797
把 k 重求和拆成矩阵幂:答案等于 (Σ_{j=0}^{n-1}M^j)^k 的左上角元素,用两次 2x2 矩阵快速幂做到每组 O(log n+log k)。
数学矩阵快速幂斐波那契python
提高+/省选-2026-10-08 03:49
RainboyOJ1794
把标记集合按极大连续段拆开,得分即若干不相交区间的收益之和;前缀/后缀斜率优化 DP 加 CDQ 分治凸包预处理出「强制标记 P」的最优值,每次询问 O(1)。
动态规划斜率优化CDQ分治凸包python
提高+/省选-2026-10-08 03:47
RainboyOJ1796
斐波那契串的后缀恒定、前缀只与下标奇偶有关,于是跨界匹配数按奇偶取两个定值,先暴力打出前几项再用 3x3 矩阵快速幂推到第 N 项。
数学字符串矩阵快速幂KMPpython
提高+/省选-2026-10-08 03:44
RainboyOJ1795
把路径唯一拆成若干段「远足」,每段长 2j 的方案数是 2·Catalan(j-1),于是答案满足 50 阶常系数线性递推,用伴随矩阵快速幂在 O(m³log n) 内求出。
数学矩阵快速幂线性递推卡特兰数python
提高+/省选-2026-10-08 03:35
RainboyOJ1793
两种删除代价分别优化:代价①是二次型用斜率优化维护下凸壳,代价②的合法分割点构成随 i 单调右移的连续区间,用双指针加单调队列求区间最小值,总复杂度 O(n)。
动态规划斜率优化单调队列双指针python
提高+/省选-2026-10-08 03:33
RainboyOJ1792
以最后一个控制站划分阶段的 DP,把段内花费拆成两个前缀和化为直线截距,用单调队列维护下凸壳把 O(n^2) 转移降到 O(n)。
动态规划斜率优化单调队列python
提高+/省选-2026-10-08 03:23
RainboyOJ1785
把 v2(w) 的期望压成低 12 位精确、高位只留「连续相同位游程」的概率 DP;转移对游程长度仿射,于是每格只存概率与游程期望,O(n·2^B)。
动态规划概率与期望位运算python
提高+/省选-2026-10-08 03:20