很多题会综合运用几种算法,我把它归到思维难度(对于这道题,而不是知识点本身)最大的那一类里。当然要是你点开一道题发现它是黄的或者绿的,那大概要么是这道题很典看标题就想起来了,要么就是有一些思想在里面。
- 最短路
- 单源最短路径(弱化版)
- 全源最短路(Johnson)
- 棋盘 实现细节
- 假期计划
- LCA
- 连通性
- 二分图
- Flip Digits 2 也是区间转换成图
- 冻结 经典分层图
- 区间覆盖
- 反悔
- Cow Coupons G 上一次见还是 dinic
- 邻项交换排序 ouuan: 应用及注意事项
-
国王游戏 高精度毒瘤 根据
$a_ib_i$ 排序 - 皇后游戏 上面注意事项的第二道例题
- 加工生产调度 cmp 要满足严格弱序
- Mountain Climbing S 虽然比上面的限制放松了,可是不影响最优方案
-
国王游戏 高精度毒瘤 根据
- 模拟工厂 枚举
- Strange Train Game 反悔贪心 还有一些区间到图的转换思想
- The Enchanted Forest
- 排队接水 纯粹的排序不等式
-
猫耳小 当时想复杂了。遍历,删除使 mex 为
$k$ 的数即可 - 骑士的工作 尽可能让 zi 小的人砍尽可能小的头。
- 小A的糖果 从 2 个和 3 个盒子开始递推,每遇到多的就把它吃掉
-
跳跳!
只需要证明第一步跳到了
$H=\max h$ . 假设存在更优解,第一步是$h_0(h_0\ne H)$ .- 若
$H$ 是终点,把顺序全部反过来,总贡献增大$H^2-h^2$ . - 若
$H$ 不是终点,设第$k$ 步跳到了$H$ ,第$(k+1)$ 步跳到了$h'$ . 把第$1\sim k$ 步反转,总贡献增大$$H^2-h_0^2+(h_0-h')^2-(H-h')^2=2h'(H-h)>0.$$
- 若
- Strange Cake Game 2 人决策,先考虑后手,分析先手的策略。
-
游戏预言
假设 J 总是把牌从大到小出,其余所有的牌都拿在一个人 F 手里,每次出
$(m-1)$ 张。如果 F 有牌能赢得这轮,剩下要出的$(m-2$ 张牌拿最小的占位即可。之后从大到小枚举每一张牌。对于
$i(1\le i\le mn)$ 号牌:- 它不是 J 的牌,把它标记为 F 的牌。
- 它是 J 的牌。如果 F 的牌至少有 1 张能够压住 J,那么 F 总是应该选择压上。因为对于 F 的任意 2 张比 J 的这张大的牌,用哪张盖上 J 的这一张牌,另一张都可以在后续回合里继续创造胜利。
用桶存下 J 的每一张牌,从
$mn$ 到 1 反向枚举,如果是 F 的牌则加入储备牌库($c\gets c+1$);是 J 的就看看牌库有没有牌,如果有$c\gets c-1$ ,否则$a\gets a+1$ 。
- 初步
- 背包
- Cow Exhibition G 设容量时要刚好等于
- 采药
- 选课 DAG
- A+B Problem(再升级)
- 最大约数和
- kkksc03考前临时抱佛脚
- 数列
- 状态压缩
- 子序列
- 最长上升子序列 LIS
- 最长公共子序列 LCS
- 抉择
-
消消乐 记录
$g_i$ 为让$[j,i]$ 可消的最大$j$ 。 - 上升点列
- 书本整理
-
树形
- Rebuilding Roads 代码见上面的题解
- 树上染色
- 函数调用
- 没有上司的舞会
- LUK-Triumphal arch
- Mag 要观察最优路径的特点
-
贪吃的九头龙
一棵树,把点分成
$m$ 组,每组不能空。包含节点 1 的那组恰好有$k$ 个点。 分配方法的代价是一些边权和,这些边的端点属于同一组。最小化分配代价。$1\le k\le n\le 300; 2\le m\le n. 1\le u\le v\le n; 0\le w\le 1e5.$ -
$(u,i,j)$ 表示状态$(u,i)$ 子树里,$j$ 个点在 1 组; -
$f/g$ 表示$u$ 在/不在 1 组时的最小代价。
转移:设 $$\begin{aligned} f' & = f(u,i+1,j) & g' & = g(u,i+1,j)\ f_u & = f(u,i,x) & g_u & = g(u,i,x)\ f_v & = f(v,|\operatorname{ch}v|,j-x) & g_v & = g(v,|\operatorname{ch}v|,j-x)\ \end{aligned}$$ 那么(记得处理无解的状态) $$\begin{aligned} f' & \gets\min_{0\le x\le j}{f_u+f_v+w, f_u+g_v}\ g' & \gets\min_x{g_u+f_v, g_u+g_v+[m=2]\times w} \end{aligned}$$
-
- DAG
- 优化
- 圣诞树
数据结构不是看完题想用什么实现合适,而是先想清楚要维护什么,再选择对应的数据结构。
- 链表
- 单调队列
- NOIP 2018 J1 T23 双向链表也可以做,但这个做法更通用
- Patrik 音乐会的等待
- Flowerpot S
- 单调栈
- 并查集
- ST 表
- 树状数组 1 2
- 二阶前缀和
- 线段树
- Sasha and Array 还有数列递推转化成矩阵乘法
- 扫描线
- 矩形面积并
- 矩形周长
- HH 的项链
- 园丁的烦恼
- Maximum Waterfall 用
set
迭代器时记得考虑
std::set
/ 平衡树- 报表统计 代码细节想了很久
std::priorirty_queue
/ 堆
- 周期相关
- 反回文串
-
均分纸牌
- 算平均数;
- 求每堆纸牌与平均数的关系(多1记为1,少1记为-1);
- 允许纸牌数量为负数情况下强行从右边的拿(可撤销贪心)。
- Sherlock and his girlfriend 质数一个色,合数一个色。
-
Vladik and fractions
$\frac2n=\frac1n+\frac1{n+1}+\frac1{n(n+1)}$ - Milena and Admirer
-
Coloring Edges
每一个环上一定含有在与不在 DAG 上的两种边。DAG 一种颜色,其它边另一种颜色即可。没有环的话直接全部同色,有环时拓扑序可以任意规定。
无重边的无向图里 DAG 对应生成树,每一个环一定经过树边和非树边。有重边情况就多了。
- Strange Madoka Game
- 神奇的幻方 就题意而言其实是模拟,但这也给出了一种构造幻方的方法。
- 格雷码
- Center of the Earth
- Happy Card 观察到删 4 个和删 3+1 是同一类,然后只要处理重复 1 2 3 次的牌即可。
- 三国游戏 找每行次大值的最大。能更优的只能是某行最大值,这时它这一列一定有比它更大的,因为对称,这个数会在它这列标对应的行标以次大值出现。
- TABOVI 差分,记得从整体上考虑。
- 数论
- GCD
-
最大公约数和最小公倍数问题
$xy=pq$ ,在$pq$ 的因子里枚举。 - Row GCD
- 二元一次不定方程 (exgcd)
-
最大公约数和最小公倍数问题
-
CRT
- Strange Madoka Game 伪高精度
- 勾股数
- 卢卡斯定理/Lucas 定理
- 模意义下的乘法逆元
- 筛法 线性筛素数
- 区间筛 素数密度
把
$[2,\sqrt R]$ 的素数找到,对每个素数给$[L,R]$ 内的合数标记。时间$O(\sqrt R + (R-L)\log \log R)$
- 区间筛 素数密度
- GCD
- 线性方程组
- 整式
- 计数
- 二分
- 水杯降温 不等式 差分
- 种树
- Widespread
- 逛画展 滑动窗口 维护不同数字个数
-
重生 一轮选择深度思考次数有
$c$ 的限制,这时只需要从整体考虑即可。 - 数列分段 Section II 最小化最大值,二分最大值
-
排序 很恶毒的线段树,如果下标
$[0,n)$ 注意特判$[n,n)$ 的查询,不然会因为标记为 0 表示有标记而无限递归(如果用其它的代号也不见得会多好)。CCF 真题可以去 LibreOJ 下数据。
- 倍增
- 枚举
- 回文质数 Prime Palindromes 一些奇怪优化,比如排除偶数位数
- Binary search
- 麻将
- 前缀和
- 快速读入
-
矩阵取数游戏 有区间 dp,但重点是
int128
使用方法。 - PASTE O(nk) = 1e8 可以直接做
- 跳石头
- 搞清洁
- 编辑距离
- 奶酪
- 最小生成树
- Cow Hurdles S
- Meteor Shower S
- Patting Heads S
- Diamond Collector S
- 路障
- 会议座位
- 线段
- 道路重建
- 最大食物链计数
- 消失之物
- 单源最短路径(标准版)
- 铺设道路
- 简单题
- Xor Sum 4
- Vacation
- Knapsack 2
- Longest Path
- Stones
- Deque
- Slimes
- Cows on Skates G
- 包子凑数
- 兔已着陆
- 网络连接
- 报数
- 集合运算 2
- 123
- Sequence Query
- Shapes
- E-梅莉的市场经济学
- 原神
- Shift vs. CapsLock
- 方格取数
- 传纸条
- 加分二叉树
- 金明的预算方案
- 细胞分裂
- Hankson 的趣味题
- 灾后重建
- 机器人搬重物
- 最短路计数
- 中位数
- 表达式的转换
- 最大数
- 排序
- 油滴扩展
- 八数码难题
- 吃奶酪
- 无聊的数列
- 最长公共子序列
- 通往奥格瑞玛的道路
- 关押罪犯
- 乌龟棋
- 序列合并
- 宝物筛选
- 黑匣子
- 石子合并
- 团伙
- 发射站
- Nim 游戏
- RoadBlock
- 荷马史诗
- 贪婪大陆
- Cow Contest S
- 着色方案
- 时间复杂度
- KMP
- 异或序列
- 棋盘
- 不开心的金明
- 种花
- 绿豆蛙的归宿
- 分组
- 最长异或路径
- 密室
- 大师
- 货币系统
- 纪念品
- 加工零件
- 网格图
- Milk Visits S
- Coins
- Candies
- 表达式
- 方格取数
- 小熊的果篮
- 廊桥分配
- 商务旅行
- 幂次
- 商店砍价
- 瑰丽华尔兹
- 蚯蚓