在各大$\text{OJ}$的题库中,找到一些好题无疑像在星辰大海中捞针一样艰难。
因此,作者制作了这份动态题库。方便各位$\text{OIer}$们日常刷题,同时也是自己成长的一份记录
对于每一个不同的知识点,作者会上传一些题目供大家练习,题目基本按照难度排序。
这些题目中,大部分是作者做过的题目,也有一部分来自于$\text{LYOI}$和外地$\text{OIer}$的原创题,均已特殊标明。在这里,作者对他们致以崇高的敬意与衷心的感谢。
为避免使用者需要注册过多账号,题目评测依赖于$\text{Luogu}$。
当然,由于作者水平有限,所给出的题目难免会出现不太合适或有误的情况,若出现这种情况,请您在评论区进行评论或者在关于界面联系作者。
如果您想贡献自己的题目的话,也请在关于界面联系作者,感谢您对本站做出的贡献。
Part 0 试机题
三道试机题目,没什么好说的。
Part 1 语言阶段
本部分是给语言入门的$\text{OIer}$们准备的基础内容,比较简单。
Part 1.1 从零开始的OI生涯
最基础的题目,大概是唐$\text{Sir}$课件的前三章的难度,加油冲过去吧!
- Luogu P3954 成绩
- Luogu P5082 成绩
- Luogu P1980 计数问题
- Luogu P1421 小玉买文具
- Luogu P1909 买铅笔
- Luogu P1423 小玉在游泳
- Luogu P1425 小鱼的游泳时间
- Luogu P1089 津津的储蓄计划
- Luogu P1085 不高兴的津津
Part 1.2 数组基础
数组可以存储大量信息,但别开太大哦。
Part 1.3 字符串基础
字符串其实就是一种特殊的数组,但它也有很多自身特点
Part 1.4 函数&递推&递归
这里算是初学者最难理解的部分,加油闯过去吧!
- Luogu P1028 数的计算
- Luogu P1036 选数
- Luogu P1014 Cantor表
- Luogu P1192 台阶问题
- Luogu P4994 终于结束的起点
- Luogu P1022 计算器的改良
Part 2 算法部分
这里集结了大量基础算法题目,不需要太多的前置知识,适合巩固基础 & 挑战思维。
当然,里面也有一些难度较高的题目,作者会
*
·标出,可以在到达一定水平之后回头做。
Part 2.1 模拟
模拟,顾名思义,就是说什么就做什么。
- Luogu P1042 乒乓球
- Luogu P1003 铺地毯
- Luogu P1068 分数线划定
- Luogu P1093 奖学金
- Luogu P1328 生活大爆炸版剪刀石头布
- Luogu P2615 神奇的幻方
- Luogu P1540 机器翻译
- Luogu P1563 玩具谜题
- Luogu P1058 立体图
- LYOI T85990 TarjanLusa
- Luogu P1039 侦探推理
- Luogu P3952 时间复杂度
- Luogu P2482【SDOI2010】猪国杀*
- Luogu P3326【SDOI2015】立体图*
- Luogu P3693 琪露诺的冰雪小屋*
- Luogu P5380【THUPC2019】鸭棋*
其中,题目TarjanLusa为$\text{Herself32}$贡献,在此作者表示深深的感谢
Part 2.2 排序
通过排序,我们可以让一个序列变的有序,更加方便我们操作。
- Luogu P1177【模板】快速排序
- Luogu P1095 明明的随机数
- LYOI T85717 Grades
- Luogu P1068 分数线划定
- Luogu P1051 谁拿了最多奖学金
- Luogu P1583 魔法照片
- Luogu P3955 图书管理员
- Luogu P1309 瑞士轮
其中,题目Grades为$\text{Liuzhe}$贡献,在此作者表示深深的谢意。
Part 2.3 贪心
事实证明,在生活中贪心不是个好习惯,但在OI中,贪心有时却真的是对的。
- Luogu P1223 排队接水
- Luogu P1090 合并果子
- Luogu P1208 混合牛奶
- Luogu P1094 纪念品分组
- Luogu P1803 线段覆盖
- Luogu P2672 推销员
- Luogu P1080 国王游戏
- Luogu P2123 皇后游戏
- Codeforces 1180B Nick and Array
- Codeforces 140C New Year Snowmen
- Luogu P3467 【POI2008】PLA-Postering
- Codeforces 161B Discounts
- Luogu P4053 【JSOI2007】建筑抢修
- Codeforces 660C Hard Process
- Luogu P1326 足球
- Codeforces 508E Arthur and Brackets
- Luogu P4107 【HEOI2015】兔子与樱花*
- Codeforces 521D Shop*
- Codeforces 183E Candy Shop*
Part 2.4 搜索
高级枚举 & 骗分神器
DFS
深度优先搜索(即DFS)是按照深度优先进行搜索,一般采用递归和栈来实现。
当然了,大部分时候DFS也是考场骗分神器
- Luogu P1002 过河卒
- Luogu P1644 跳马问题
- Luogu P1019 单词接龙
- Luogu P1101 单词方阵
- Luogu P1219 八皇后
- Luogu P5194 Scales
- Luogu P3915 树的分解
- Luogu P1378 油滴扩展
- Luogu P5018 对称二叉树
- Luogu P2668 斗地主
- Luogu P2540 斗地主增强版
BFS
广度优先搜索(即BFS)是按照广度优先进行搜索,一般采用队列实现。
更适合处理图上的有关问题
- Luogu P1162 填涂颜色
- Luogu P1443 马的遍历
- Luogu P3956 棋盘
- Luogu P1332 血色先锋队
- Luogu P1032 字串变换
- Luogu P1135 奇怪的电梯
- Luogu P1126 机器人搬重物
- Luogu P1379 八数码难题
- Luogu P1330 封锁阳光大学
- USACO P2730 魔板 Magic Squares
折半搜索
在搜索一段有序的数列时,我们可以将数列一分为二,分别搜索后利用排列组合求出最后的答案。
记忆化搜索
在搜索时记录上一个搜索的状态以节省时间,是一种比较常用的优化手法。
同时,记忆化搜索也是动态规划的一种实现方式。
A-star
在$\text{BFS}$的基础上设计一个合理的估价函数,就成了$\text{A-star}$算法。
搜索的剪枝
没有剪枝的搜索就像没有跳刀的斧王,无法发挥出其应有的威力
- Luogu P1731 生日蛋糕
- UVA307 小木棍 Sticks
- Luogu P1120 小木棍【数据加强版】
- Luogu P1312 Mayan游戏
- Luogu P1074 靶形数独
- Luogu P1526【NOI2003】智破连环阵*
Part 2.5 二分
可以把一些很困难的计算问题变成判定性问题,前提是必须有序
Part 2.6 分治
分治分治,分而治之。
即把一些看起来十分巨大的问题分解为一个个小问题依次求解,最后合成答案。
Part 3 动态规划
动态规划(简称$\text{dp}$)通过利用已知状态获取最优解,是$\text{OI}$中最为重要的算法之一。
其使用需要满足最优子结构与无后效性原则,并且注意边界条件的处理
Part 3.1 线性dp
一般设$F_{i , s}$表示区间$[1 , i]$在限制条件为$s$情况下的最优解。
- USACO1.5 【IOI1994】数字三角形 Number Triangles
- Luogu P1020 导弹拦截
- Luogu P1091 合唱队形
- Luogu P1095 守望者的逃离
- Luogu P4310 绝世好题
- Codeforces 5C Longest Regular Bracket Sequence
- Luogu P1944 最长括号匹配
- Luogu P1772 【ZJOI2006】物流运输
Part 3.2 背包问题
背包是一类重要的$\text{dp}$模型,包含$0/1$背包,完全背包,多重背包等多种不同形式。近几年的$\text{NOIP / CSP}$考过多次
需要熟练掌握其各种变形与套路。
- Luogu P1284 三角形牧场
- Luogu P1156 垃圾陷阱
- Luogu P1941 飞扬的小鸟
- Luogu P1282 多米诺骨牌
- Luogu P5322 【BJOI2019】排兵布阵
- Luogu P2224 【HNOI2001】产品加工
- Luogu P4141 消失之物
- Luogu P4158 【SCOI2009】粉刷匠
- Luogu P3188 【HNOI2007】梦幻岛宝珠
- Luogu P5289 【十二省联考2019】皮配*