训练题表
暂时不全, 有些做过的题不想去找了,以后再说
因校内OJ地址有变,部分校内OJ上的题无法正常打开
基础
1.递推:#224. 「20181031模拟」白玉楼前、#258. 「20181105练习」StopAllSounds、#337. 「20190306模拟」逃离地狱岛(递推+找组合数规律)
2.贪心:P1966 火柴排队、#139. 【UER #4】被删除的黑白树、P1080 国王游戏(推式子+高精度封装)、#215. 「20181027模拟」打地鼠游戏、#218. 「20181029模拟」算术、#237.「20181101模拟」teleport、#272. 「20181209模拟」手套、1912: [Apio2010]patrol 巡逻(树的直径)、3709: [PA2014]Bohater(打怪兽贪心)、C - Different Strokes(写答案式+贪心)、#3052. 「十二省联考 2019」春节十二响(贪心扩展(链上到树上))、[E. Matching vs Independent Set
(有关匹配和独立集的不错的贪心)](https://codeforces.com/contest/1199/problem/E)、#1335. 「20191109 模拟」小 w 与卡牌游戏(二分(分类二分)+贪心)
3.倍增:4488: [Jsoi2015]最大公约数、C-保护(主席树与LCA)(倍增爬树)、A-最长路(倍增哈希、拓扑、最长路)、P4180 【模板】严格次小生成树[BJWC2010](倍增维护次大值)、C-洞穴、#339. 「20190309模拟」魔术回路(倍增+最长路记忆化搜索)、#1310. 「20191003模拟 & 常州中学2019夏令营day2」时之终结(构造+二进制拆分(用到有向完全图的一些性质))
4.搜索:D. Kilani and the Game(BFS Plus)
5.模拟:E. String Multiplication、Pixel Shuffle(坑爹模拟+置换性质)、A. Diana and Liana(two-pointers预处理)、下雨天(模拟+性质(相邻状态只差1)+栈维护)
6.找规律:Doom's Day、#1222. 「20190416模拟 」table(组合规律)、Seq
7.构造:#334. 「20190303模拟」直径(画出大概构造出的图形后列式计算再构造)、B. Wrong Answer
8.枚举:B. Circus(列出限制条件枚举检验是否满足)
动态规划及优化
1.线性/一般DP:P1280 尼克的任务、P1279 字串距离、P1436 棋盘分割、#149. 【NOIP2015】子串、1403 新三国争霸(最小生成树+DP)、1003: [ZJOI2006]物流运输(Dijkstra+DP)、C. Ayoub and Lost Array(放在剩余系下DP)、D. Jongmah(发现性质+巧妙DP)、D - Ears(性质+对应设计状态DP)、F - Pass(性质+套路DP)、C. Compress String(用后缀自动机识别子串)、K - Stones(略有博弈思想的DP)、M - Candies(前缀和优化DP转移(因为转移是一段连续的区间))、R - Walk(矩阵快速幂(走k步后从i走到j的方案数))、T - Permutation(前缀后缀优化DP)、F. Rectangle Painting 1(性质分析+矩形上的DP(注意DP范围与顺序))
2.区间DP:#212. 「20181026模拟」狐狸的谜语、5073: [Lydsy1710月赛]小A的咒语(贪心+DP+LCP)、D. Flood Fill(区间DP的另类写法(不需要枚举区间长度))、L - Deque(博弈思想简单区间DP)、N - Slimes
3.背包:3163: [Heoi2013]Eden的新背包问题、#17. 【NOIP2014】飞扬的小鸟、X - Tower(有限制的背包+猜结论)
4.单调队列:2442: [Usaco2011 Open]修剪草坪、#208. 「20181024模拟」对决(略带博弈色彩)
5.斜率优化:1911: [Apio2010]特别行动队、1096: [ZJOI2007]仓库建设、1010: [HNOI2008]玩具装箱toy、3675: [Apio2014]序列分割、Z - Frog 3(模板)、2726: [SDOI2012]任务安排(斜率优化二分决策点转移+费用提前计算思想)
6.四边形不等式(决策单调性)(重点复习):P1912 [NOI2009]诗人小G、4850: [Jsoi2016]灯塔、4609: [Wf2016]Branch Assignment
7.数据结构优化DP:3688: 折线统计、P3287 [SCOI2014]方伯伯的玉米田、#203. 「20181015模拟」reading(线段树优化DP)(需要拆式子)、G. Most Dangerous Shark(很好的一道树状数组优化DP题,预处理思想也不错)、Q - Flowers(基础树状数组优化DP)、货物分组(费用提前计算思想+线段树维护单调栈维护最值+线段树优化DP)
8.矩阵加速DP:1009: [HNOI2008]GT考试(KMP预处理)、4870: [Shoi2017]组合数问题(转化题目+循环矩阵直接“卷积”)
9.wqs优化(带权二分):#2478. 「九省联考 2018」林克卡特树(转化题意+树上K条不相交路径最大权值)
10.概率期望DP:1419: Red is good、1415: [Noi2005]聪聪和可可、4832: [Lydsy1704月赛]抵制克苏恩、P1850 换教室、1076: [SCOI2008]奖励关、I - Coins(简单概率DP)、J - Sushi(移项)、1426: 收集邮票(列式移项递推)、2318: Spoj4060 game with probability Problem(概率期望DP+贪心(发现什么时候是最优决策)+移项+观察DP值优化的黑科技)、3036: 绿豆蛙的归宿(简单图上概率期望DP(有向无环图)注意倒序DP)、4872: [Shoi2017]分手是祝愿、3143: [Hnoi2013]游走(转化题意(边的贡献->边的遍历次数->点的遍历次数)(具体参考收藏的博客 这个应该记着)+高斯消元)、#1225.「20190418 模拟 」Max(概率期望状压DP+前缀和优化)
11.树形DP:1369: [Baltic2003]Gem、5232: [Lydsy2017省队十连测]好题、4753: [Jsoi2016]最佳团体(01分数规划模型)、P2014 选课、P3177 [HAOI2015]树上染色、5072: [Lydsy1710月赛]小A的树、P4516 [JSOI2018]潜入行动、#222. 「20181030模拟」永琳的竹林迷径(排列组合)、P2585 [ZJOI2006]三色二叉树、P2899 [USACO08JAN]手机网络Cell Phone Network、SP1435 PT07X - Vertex Cover(最小点覆盖)、P - Independent Set(乘法原理)、Accumulation Degree(二次扫描换根DP)、#105. 【APIO2014】Beads and wires(换根DP+维护次大值)、#340. 「20190309模拟」可怜与超市(树上背包)、V - Subtree(中间舍去一个拆为前缀和后缀处理(因为没有保证互质可能不存在逆元)+树上三次扫描+换根DP)、3696: 化合物(FWT优化计数)、T67701 [JSOI2019冬令营1.27]小F的星术(astrology)(树上K条不相交路径计数+概率期望计算)、#1016. 「2019福建省冬令营」堆(组合计数DP+二叉堆性质+分段打表预处理)、3836: [Poi2014]Tourism(树形状压DP)、#512. 「20190402 模拟」C(“树上”DP+DP值与DP状态互换(不同的值远少于状态数))
12.计数DP:#343. 「20190313模拟」柚的策略(很好的计数题+前缀和+差分思想)、D. Nauuo and Circle(计数树形DP)
13.数位DP:1026: [SCOI2009]windy数、B-数数字、1833: [ZJOI2010]count 数字计数、4521: [Cqoi2016]手机号码、#140. 【UER #4】被粉碎的数字(神仙数位DP题)、S - Digit Sum(求某一个数的倍数放在剩余系下解决)
14.状压DP:P2704 [NOI2001]炮兵阵地、P2831 愤怒的小鸟、1097: [POI2007]旅游景点atr、3590: [Snoi2013]Quare、1801: [Ahoi2009]chess 中国象棋(不是二进制压位)、O - Matching(二分图最大匹配计数)、5248: [2018多省省队联测]一双木棋(略有博弈思想的状压DP+BFS)、3836: [Poi2014]Tourism(树形状压DP)、#1225.「20190418 模拟 」Max(概率期望状压DP+前缀和优化)、E. Marbles(性质+状压DP)、十二桥问题(最短路+状压DP)
15.子集DP:2073: [POI2004]PRZ、U - Grouping
16.插头DP(重点复习):Formula 1、Eat the Trees、P3190 [HNOI2007]神奇游乐园、P2289 [HNOI2004]邮递员
17.斯坦纳树(重点复习):5180: [Baltic2016]Cities、2595: [Wc2008]游览计划、4006: [JLOI2015]管道连接、4774: 修路、#1237. 「20190423 模拟」最小权路径集问题(修路原题 斯坦纳树+子集DP)
18.动态DP:P4719 【模板】动态dp
树形结构
1.最近公共祖先(LCA):4242: 水壶(平面网格图最小生成树)
2.树的DFS序:C-保护(主席树与LCA)、#6514. 「雅礼集训 2018 Day10」文明(求LCA+乱搞(大概就是子树内外+线段覆盖))
3.dsu on tree:E. Lomsat gelral
4.点分治(重点复习):FTOUR2 - Free tour II、Prime Distance On Tree(需要FFT加速)、2652. 秘术「天文密葬法」(01分数规划) 长链剖分也可做、#510. 「20190402 模拟」A(点分治+前缀和(点对问题))
5.动态点分治(重点复习):1095: [ZJOI2007]Hide 捉迷藏、QTREE4 - Query on a tree IV、[ZJOI2015]幻想乡战略游戏、[HNOI2015]开店、#55. 【WC2014】紫荆花之恋
6.树上差分:P2680 运输计划、P3128 [USACO15DEC]最大流Max Flow、P3250 [HNOI2016]网络(树状数组维护树上差分+整体二分)
7.虚树:2286: [Sdoi2011]消耗战、3991: [SDOI2015]寻宝游戏(有虚树思想)、3611: [Heoi2014]大工程
8.支配树:2815: [ZJOI2012]灾难(灭绝树板子题(DAG上的支配树 只能处理出从某一点出发到所有能到达的出度为0的点的路径上的必经点))、Blow up the city(支配树板子题)
图论
1.基础图论:E. Helping Hiasat(无向图的最大独立集等于这个无向图补图的最大团)、D - Restore the Tree(拓扑排序)、D. Shortest Cycle(二进制按位考虑+BFS找无向图最小环(注意必须每个点都要BFS一次!))
2.网络流(重点复习):
- 二分图:P2756 飞行员配对方案问题
- 最大流(最小割):P3376 【模板】网络最大流、3396: [Usaco2009 Jan]Total flow 水流(模板)、1412: [ZJOI2009]狼和羊的故事(对偶图)、3894: 文理分科(重要模型)、1066: [SCOI2007]蜥蜴、Fair Share(公平分配问题,二分)、Frequency Hopping(奇怪的最大流)、Collectors Problem(不错的模型)、P2774 方格取数问题、2561: 最小生成树(简单网络流)、1458: 士兵占领(类似于二分图的不错的模型)、1305: [CQOI2009]dance跳舞(拆点+二分)、1189: [HNOI2007]紧急疏散evacuate(二分+分层拆点(思想不错))、电视网络 Cable TV Network(最小割+拆点)、2127: happiness(文理分科模型)、2132: 圈地计划(问题转化(黑白染色)+文理分科模型)、#330. 「20190224模拟」不同的缩写(序列自动机+Trie树+网络流(建图+最大匹配))、Destroying The Graph(最小割输出方案)、2400: Spoj 839 Optimal Marks(位运算按位考虑+最小割建模(集合划分 只有跨集合的边才能产生贡献)+最小割方案 注意2的次幂爆int)、#7. 「20170322模拟」Number(发现限制条件的性质后将元素分为两类+最小割建模)、1324: Exca王者之剑(转化题意(网络流24题里的方格取数问题(最大点权独立集)))、4657: tower(神奇最小割模型(由“不能存在交点”想到)注意限制流量流动方向(拆点)(最小割与最大割转换技巧))、3144: [Hnoi2013]切糕(最小割(切糕模型(其实就是离散变量模型)))、TopCoder 12727 FoxAndCity(离散变量模型+最短路的小性质(也许算是))、#6005. 「网络流 24 题」最长递增子序列(DP+最大流(限制节点流量 但本题不需要拆点))、#6002. 「网络流 24 题」最小路径覆盖(最大流(从合并节点的角度考虑 合并尽量多的节点以使得路径覆盖最小)+输出方案(拓扑排序))、Sightseeing tour(混合图的欧拉回路判定(按无向边考虑 每条无向边可以给相邻两个点其中一个的入度加一 最终合法情况每个点的入度都等于出度))、5251: [2018多省省队联测]劈配(二分枚举+最大流(动态加边))、BoardPainting(二分图染色+文理分科模型)、GearsDiv1(枚举+最小割)、LaserTowersDiv1(离散变量模型+INF边限制流动方向)、Course Selection(离散变量模型+“最大割”(用较大的值减去原来的值作为新的值然后求最小割))、4625: [BeiJing2016]水晶(性质推导问题转化(关键)+最小割(INF边表示不合法方案+拆点限制每块水晶只被炸掉一次))、#6004. 「网络流 24 题」圆桌聚餐(流量分配(近似于二分图匹配))、2756: [SCOI2012]奇怪的游戏(黑白染色+流量分配(对于格点为奇数的找相等关系列式计算后判断合法,对于为偶数的二分答案)(发现无论怎么操作黑色总和与白色总和不变是关键))、SurroundingGame(黑白染色+INF边描述选择限制)、TheTilesDivOne(二次黑白染色+拆点限制节点流量+最大流(让L型的三个格点处在不同颜色中以方便建模))
- 费用流:Intervals(区间覆盖问题)、P4016 负载平衡问题、P2045 方格取数加强版、1520: [POI2006]Szk-Schools、#345.「20190319模拟」最短路(拆点建模+最小费用最大流(zkw费用流)+输出最小割方案)、2673: [Wf2011]Chips Challenge(流量平衡+枚举+最大费用最大流(zkw))、#1224. 「20190416 模拟 」path(发现性质+网络流(平面图最短路等于对偶图最小割+类似扩展离散变量模型(INF边表示限制)))、1927: [Sdoi2010]星际竞速(最小权路径覆盖)
- 最大权闭合子图:P2762 太空飞行计划问题、P2805 [NOI2009]植物大战僵尸(以及Tarjan)、#289. 「20181223江苏训练营第四期」树染色(树上路径有交判断)、E. Biologist(文理分科模型+最大权闭合子图)、FoxAndGo3(最大权闭合子图)
- 01分数规划:Dropping tests
- 最大密度子图:Hard Life
- 有容量上/下界的最大/最小/费用流:Inspection(只有下界的最小流)、3876: [Ahoi2014&Jsoi2014]支线剧情(有下界的最小费用可行流)、3280: 小R的烦恼(有源汇最小费用可行流)、D. Captain America(有上下界的最大流)、#6008. 「网络流 24 题」餐巾计划(有下界的最小费用可行流(另一种费用流建模可以不需要下界))、#1237. 「20190424 模拟」棋盘(上下界网络流模板题)
- 无源/无汇网络流:Reactor Cooling(无源无汇有上下界可行流)
3.2-SAT(重点复习):Now or later、Astronauts、Wedding、Planar、1823: [JSOI2010]满汉全席、Priest John's Busiest Day、Ikki's Story IV - Panda's Trick、Building roads、4945: [Noi2017]游戏(枚举+2-SAT(注意逆否命题的连边))
4.差分约束:3436: 小K的农场、1202: [HNOI2005]狡猾的商人、2330: [SCOI2011]糖果、D. Gourmet choice(缩点)、Intervals、E. Flights(差分约束(判断负环 注意判断无用的点))
5.最短路:
- 正常最短路:P4328 [COCI2006-2007#1] Slikar、#223. 「20181030模拟」辉夜的夜空明珠
- 分层图最短路:P4473 [国家集训队]飞飞侠
- 平面网格图分治最短路思想:ZJOI2016旅行者
- 建图+最短路:4398: 福慧双修(二进制枚举)、伊吹萃香
6.图的联通性:
- 联通性问题:3569: DZY Loves Chinese II(图的联通性+线性基(判断删边后图是否联通)(随机赋值线性基判断异或和是否可为0))
- 割点:
- 桥:
- 强联通分量:1179: [Apio2009]Atm
- 边双联通:
- 点双联通:
7.Kruskal重构树:3545: [ONTAK2010]Peaks、#393. 【NOI2018】归程、F. Asya And Kittens(还有别的做法)
8.生成树问题:P4180 【模板】严格次小生成树[BJWC2010](倍增维护次大值)、#243. 「20181102模拟」华莱士(最小基环树森林)
9.仙人掌(圆方树):2125: 最短路(圆方树入门题)、1023: [SHOI2008]cactus仙人掌图(求仙人掌的直径(圆方树上DP))、4316: 小C的独立集(仙人掌上的DP(求最大独立集))
字符串
1.哈希:P4472 [BJWC2018]八维、4755: [Jsoi2016]扭动的回文串(manacher+倍增+哈希)、4337: BJOI2015 树的同构(括号序列Hash判断树的重构(注意按照hash值排序进行hash,不是子树大小))、4754: [Jsoi2016]独特的树叶(类似换根DP的思想暴力求一棵树的所有Hash值(注意Hash方法))、#346. 「20190325模拟」xiz(转化字符串+哈希)
2.KMP:P3375 【模板】KMP字符串匹配、PERIOD - Period(求解一个字符串的最小循环元)、P3435 [POI2006]OKR-Periods of Words(KMP本质题)、D. Camp Schedule(KMP+乱搞)、#1332. 「20191108 模拟」小 w 与密码(KMP的一些性质)
3.AC自动机:1444: [Jsoi2009]有趣的游戏(Trie图上的DP)、1030: [JSOI2007]文本生成器、Matrix Matcher(与KMP)、3172: [Tjoi2013]单词(其实我是用SAM写的)
4.manacher(重点复习):P3805 【模板】manacher算法、P4287 [SHOI2011]双倍回文、3790: 神奇项链(问题转化+贪心+树状数组)、吉哥系列故事——完美队形II(manacher变形)
5.回文树(回文自动机)(重点复习):The Number of Palindromes(回文树模板题)、3676: [Apio2014]回文串、2160: 拉拉队排练、2565: 最长双回文串、#333. 「20190301模拟」少女的六次真情告白(加树剖或LCT)
6.序列自动机:P4608 [FJOI2016]所有公共子序列问题(自动机上DP)、P4112 [HEOI2015]最短不公共子串(序列自动机+SAM+暴力DP)、#344. 「20190313模拟」加帕里图书馆(序列自动机求本质不同回文子序列+挺不错的区间DP)
7.后缀数组(重点复习):P3809 【模板】后缀排序、P2852 [USACO06DEC]牛奶模式Milk Patterns、1031: [JSOI2007]字符加密Cipher、Best Cow Line, Gold、4698: Sdoi2008 Sandy的卡片(后缀自动机似乎也可以做)、3230: 相似子串(用后缀数组的height数组求一个字符串本质不同串的个数)、4278: [ONTAK2015]Tasowanie(倍增+hash或后缀数组,以及贪心)、5073: [Lydsy1710月赛]小A的咒语(贪心+DP+LCP)
8.后缀自动机(重点复习):【模板】后缀自动机、LCS - Longest Common Substring、4516: [Sdoi2016]生成魔咒(后缀数组也可做 自动机码量小)、3238: [Ahoi2013]差异、3998: [TJOI2015]弦论、LCS2 - Longest Common Substring II、#329. 「20190224模拟」原样输出(后缀自动机的合并,略有序列自动机思想)、4566: [Haoi2016]找相同字符、4556: [Tjoi2016&Heoi2016]字符串、4199: [Noi2015]品酒大会(单调性、前缀和思想)、2894: 世界线(广义后缀自动机模板题)、3926: [Zjoi2015]诸神眷顾的幻想乡、1396: 识别子串(分情况讨论+简单数据结构维护)、#127. 「20180714NOI模拟」Ernd(深入发掘SAM的特点+贪心)、2806: [Ctsc2012]Cheat(广义SAM+二分+单调队列优化DP)、#3049. 「十二省联考 2019」字符串问题(后缀自动机(parent树的DFS序)+SAM+线段树优化建图+拓扑排序)、#1239. 「20190424 模拟」等级(后缀自动机+可持久化线段树合并+拓扑排序更新)
数据结构
1.链表:#1328. 「20191107 模拟」转圈游戏(手写链表+队列(注意一些细节)))
2.并查集:E - Weights on Vertices and Edges
3.队列:
- 普通队列:
- 优先队列:#323. 「2019冬令营安师大附中集训1.8 & 20190303模拟」排序1(发现该排序的性质后再用可删除元素的优先队列维护)、#1312. 「20191003模拟 & 常州中学2019夏令营day2」曾有两次(建出最短路树+堆+树上启发式合并+DFS序判断是否在子树内的小trick)
4.线段树:
- 正常线段树:3038: 上帝造题的七分钟2、#246. 「20181103模拟」童话故事(竞赛树)、2752: [HAOI2012]高速公路(road)、CF1110F Nearest Leaf(离线处理技巧(挂询问))、F. Please, another Queries on Array?(数据结构维护欧拉函数)、W - Intervals(结论+贪心?)、#6507. 「雅礼集训 2018 Day7」A(势能分析复杂度+线段树(注意线段树上位运算标记的处理与判断))、F - Snuke's Coloring 2(推性质+线段树维护单调栈)
- 动态开点线段树:P3960 列队、#335. 「20190303模拟」定价(动态开点线段树维护二进制位下的贪心)
- 线段树二分:#217. 「20181027模拟」mex、P4559 [JSOI2018]列队、F. One Occurrence、#244. 「20181102模拟」长者(主席树上二分比较字符串哈希值)
- 线段树优化建图:4383: [POI2015]Pustynia、5017: [Snoi2017]炸弹
- 线段树合并:[POI2011]ROT-Tree Rotations、4756: [Usaco2017 Jan]Promotion Counting、2733: [HNOI2012]永无乡、las
- 线段树维护扫描线:1645: [Usaco2007 Open]City Horizon 城市地平线、#277. 「20181223模拟」十字形
- 线段树分治:4644: 经典傻逼题(线段树分治+线性基+bitset 边的贡献转化为点的贡献(异或))、#6515. 「雅礼集训 2018 Day10」贪玩蓝月(线段树分治+剩余系下的背包)、4184: shallot(时间分治线段树+线性基)、4025: 二分图(线段树分治+按秩合并可分裂并查集判断二分图(直接传递图的信息耗时巨大)(判断二分图的方式有判断路径奇偶性(异或)或者反集连边))、1018: [SHOI2008]堵塞的交通traffic(按秩合并并查集维护图的连通性)、#1239. 「20190423 模拟」越野赛车问题(问题转化+线段树分治+按秩合并可撤销并查集维护树上最长链(树直径的性质))
5.树状数组:P4113 [HEOI2012]采花、#328. 「20190224模拟」全连(通过挂链表延迟修改)
6.树链剖分:P3384 【模板】树链剖分、C-树(线段树、换根(目前写过最长的代码,长度5.66KB))、2238: Mst、Relief grain(树链剖分好题 树链剖分划分区间+前缀和拆分+线段树)、#1241. 「20190426 模拟」农民(点上信息转化为边上信息简化问题+树链剖分)、神J上树(树链剖分+维护每一个重链的单调栈+单调栈上二分)、路径计数机(枚举换根+长链剖分+指针传递的小trick(注意开空间))
7.可持久化数据结构:
- 可持久化线段树(主席树):小奇的花园(点修改链查询改为子树修改点查询)、3207: 花神的嘲讽计划Ⅰ(附带精妙Hash技巧)、P1972 [SDOI2009]HH的项链、#568. 树上数数(LCA+树上主席树)
- 可持久化平衡树:P3835 【模板】可持久化平衡树、P5055 【模板】可持久化文艺平衡树(可持久化fhqTreap(注意Merge操作左右子树的判断必须依据子树大小和随机数))、#569. 文本编辑器(可持久化fhqTreap+复制序列某一段的黑科技(重要))
- 可持久化Trie树:#1017. 「2019福建省冬令营」密文(最小生成树建模+Trie树贪心或可持久化Trie树+Boruvka算法)、#3048. 「十二省联考 2019」异或粽子(01Trie+堆维护最大值)
- 可持久化左偏树:P4359 [CQOI2016]伪光滑数(可持久化左偏树DP)
8.平衡树(重点复习):
- Treap:
- Splay:P1486 [NOI2004]郁闷的出纳员、#336. 「20190306模拟」逃离亚马逊(Splay+套路树状数组优化DP)
- fhq Treap(平衡树合并):
9.树套树(重点复习):4137: [FJOI2015]火星商店问题(可持久化线段树套动态开点01Trie)、#564. 多重集合问题(倍增+线段树套01Trie)
10.Link-Cut Tree(重点复习):3282: Tree(模板题)、#276. 「20181216模拟」帮会(简化版LCT+线段树维护)、4530: [Bjoi2014]大融合(维护子树信息:重链+非重链)、#556. 一路畅通(LCT维护生成树+边拆为一个点+两条边的小技巧)
11.替罪羊树:
12.分块(重点复习):
- 分块数据结构(普通分块):P3396 哈希冲突、2506: calc、3343: 教主的魔法、#1235. 「20190423 模拟」铃铛计数问题(巧妙双重分块)
- 分块打表:3798: 特殊的质数、P1822 魔法指纹
- 根号分治(见分治算法)
13.莫队(重点复习):
- 普通莫队:
- 带修改莫队:
- 树上莫队:
14.K-D Tree(重点复习):4066: 简单题、2716: [Violet 3]天使玩偶
15.线性基:P3812 【模板】线性基、2460: [BeiJing2011]元素、2115: [Wc2011] Xor、E - Odd Subrectangles(线性基求某个数被异或出的方案数)、XOR(线性基求异或k大值模板题 注意开long long)
16.左偏树(可并堆):P3377 【模板】左偏树(可并堆)(启发式合并也可以)、P1552 [APIO2012]派遣、P3261 [JLOI2015]城池攻占(带修左偏树)
17.单调栈:F - Snuke's Coloring 2(推性质+线段树维护单调栈)、神J上树(树链剖分+维护每一个重链的单调栈+单调栈上二分)、#342. 「20190313模拟」大型演习(cdq分治+主席树维护单调栈)、1007: [HNOI2008]水平可见直线(半平面交思想+单调栈)、#1314. 「20191004模拟 && COCI2018/2019 Contest Round #1」strah(单调栈+面积计算)、货物分组(费用提前计算思想+线段树维护单调栈维护最值+线段树优化DP)
18.STL:P5021 赛道修建(二分+set维护贪心)
分治算法
1.普通分治:#225. 「20181031模拟(前缀后缀背包,DP)」式神守护、Can you find it?(二分查找)、1857: [Scoi2010]传送带(三分套三分)、#184. 【ZJOI2016】旅行者(分治最短路)
2.cdq分治(重点复习):3262: 陌上花开、1176: [Balkan2007]Mokia、#342. 「20190313模拟」大型演习(cdq分治+主席树维护单调栈)、T33394 Problem A. 染色游戏 (paint.c/cpp/pas)(cdq分治预处理+斜率优化DP)、2716: [Violet 3]天使玩偶
3.整体二分(重点复习):2527: [Poi2011]Meteors、2738: 矩阵乘法、P3250 [HNOI2016]网络(树状数组维护树上差分+整体二分)
4.根号分治(BigSmall思想)(重点复习):NOI2018模拟赛Yist(不在内网直接翻U盘)、APIO2015雅加达的摩天楼(必须要复习的坑人根号分治优化建图)
数论数学
1.数论(重点复习):
- 基础:#331. 「20190301模拟」最小公倍数(简单数学题)、P1154 奶牛分厩(列式移项转化题意+类似埃式筛法思想)、F. Graph Traveler(数学+记忆化搜索+bitset(可以不用))
- 扩展欧拉定理:#144. 「NOIP2017模拟11-02」电压
- 欧拉函数:2705: [SDOI2012]Longge的问题、GCD - Extreme (II)、P4980 【模板】Polya定理(gcd与欧拉函数转换的小技巧(枚举gcd用欧拉函数算其出现的次数))
- 扩展欧几里得(线性同余方程):P1516 青蛙的约会、#211. 「20181026模拟」Jams 倒酒、1441: Min(裴蜀定理原理)
- 高次同余方程(离散对数):P4884 多少个1?(离散对数BSGS,附带根号分治思想)、2242: [SDOI2011]计算器(快速幂+扩展欧几里得+高次同余方程)、P4195 【模板】exBSGS(扩展大步小步定理)、1420: Discrete Root(第二类高次同余方程)
- 中国剩余定理:P3868 [TJOI2009]猜数字、P4777 【模板】扩展中国剩余定理(EXCRT)、#396. 【NOI2018】屠龙勇士(附赠简单平衡树)
- 整除分块:1257: [CQOI2007]余数之和
- Lucas定理:【模板】卢卡斯定理、1951: [Sdoi2010]古代猪文
- Pollard-Rho质数判断法:
2.基本计数原理(重点复习):Chess Queen、Camp(组合计数+DP+循环矩阵优化)、C-串串、#226. 「20181031模拟」西行妖下(错排容斥计数,其次是树链剖分)、#271. 「20181209模拟」积水(分类讨论、高精度、FFT)、3522: [Poi2014]Hotel(树的DFS+计数(DP好像也行))、P4492 [HAOI2018]苹果树(组合计数+基本计数原理(考虑对全局的贡献))、#1311. 「20191003模拟 & 常州中学2019夏令营day2」博士之时(计数+分类讨论)
3.组合计数:#236.「20181101模拟」contest、#242. 「20181102模拟」膜法、#245. 「20181103模拟」数字三角形、计算系数(二项式定理)、P3270 [JLOI2016]成绩比较
4.矩阵:【模板】矩阵加速、斐波那契数列、2973: 石头游戏、4818: [Sdoi2017]序列计数(也可以暴力倍增卷积)、#1330. 「20191107 模拟」粮食放大器(二进制分解(矩阵乘法)+重定义矩阵乘法+细节处理+结构体封装矩阵乘法方便写代码)
5.高斯消元:
- 一般方程组:P3389 【模板】高斯消元法(回带/高斯约旦(无回带)消元+有无解/是否有唯一解判断复习)、1013: [JSOI2008]球形空间产生器sphere(差分降次+消元)、3143: [Hnoi2013]游走(转化题意(边的贡献->边的遍历次数->点的遍历次数)(具体参考收藏的博客 这个应该记着)+高斯消元)、2707: [SDOI2012]走迷宫(Tarjan缩点+拓扑+概率期望+高斯消元)
- 异或方程组:P2962 [USACO09NOV]灯Lights(异或方程组+剪枝搜索处理自由元)
6.容斥原理:
- 普通容斥:E - Everything on It(容斥原理+第二类斯特林数)、F - Dark Horse(发现对称性+排序+组合计数+容斥原理)、E - Ribbons on Tree(容斥原理+树上背包+有关容斥系数的小trick)、P5505 [JSOI2011]分特产(容斥原理+插板法)、P3160 [CQOI2012]局部极小值(容斥+状压DP(DP思想不错))
- 广义容斥原理:3622: 已经没有什么好害怕的了(广义容斥原理+排序+dp+二分查找)、2839: 集合计数(广义容斥原理+欧拉定理的推论)、P4491 [HAOI2018]染色(广义容斥原理+NTT)
- Min-Max容斥:Card Collector(Min-Max容斥概率期望入门题)、P3175 [HAOI2015]按位或(Min-Max容斥+FWTor正变换)
7.概率与期望:A-管道维修、P1291 [SHOI2002]百事世界杯之旅、P4204 [NOI2006]神奇口袋(Polya's urn模型)、Joining with Friend、B-选择题、#238.「20181101模拟」dice、LOJ #6513.「雅礼集训 2018 Day10」足球大战(概率期望+简单组合)、3143: [Hnoi2013]游走(转化题意(边的贡献->边的遍历次数->点得遍历次数)(具体参考收藏的博客 这个应该记着)+高斯消元)、2707: [SDOI2012]走迷宫(Tarjan缩点+拓扑+概率期望+高斯消元)
8.群论:
- 置换:Arif in Dhaka(Polya定理)、P1446 [HNOI2008]Cards、Cubes(组合计数+空间想象能力)、Leonardo's Notebook(置换分解+置换的小性质(一个长为L的置换的k次方会把该置换分裂成gcd(L,k)份且任意一份长为L/gcd(L,k)))、Necklace(Arif in Dhaka升级版)、Find the Permutations(置换分解DP(状态设计是关键!))、Pixel Shuffle(坑爹模拟+置换性质)、Andy's Shoes(置换分解(注意读题))、Silly Sort(置换分解+贪心)、The Colored Cubes(正方体旋转+Polya定理)、Alphabet Soup(KMP+Polya定理+基本计数原理)
- Burnside引理:P4727 [HNOI2009]图的同构记数、P4128 [SHOI2006]有色图、Sultan's Chandelier(burnside引理+树形DP+树哈希+KMP)
9.数值方法:
10.莫比乌斯反演(重点复习):
11.多项式(重点复习):
- FFT:A*B高精度、FFT模板、P4721 【模板】分治 FFT、3527: [Zjoi2014]力(用来熟悉卷积的形式)、4827: [Hnoi2017]礼物(列式+数学变形+FFT(翻转多项式以方便FFT的小技巧))、3513: [MUTC2013]idiots(FFT+前缀和+基础容斥)、P5075 [JSOI2012]分零食(生成函数的简单应用+倍增+FFT)
- NTT:#34. 多项式乘法(FFT也可以,但精度有误差,速度慢)、4555: [Tjoi2016&Heoi2016]求和(化式子+第二类斯特林数+二项式反演)、P4245 【模板】任意模数NTT(模板题(MTT))、G. Bandit Blues(二项式定理+第一类斯特林数+倍增+NTT)
- FWT:P4717 【模板】快速沃尔什变换、#310. 【UNR #2】黎明前的巧克力(FWT原理题)、#267. 【清华集训2016】魔法小程序(任意进制“FWT”原理)
- 多项式相关:P4238 【模板】多项式求逆、P4239 【模板】多项式求逆(加强版)(任意模数NTT+多项式求逆)、P4512 【模板】多项式除法、P5050 【模板】多项式多点求值、3456: 城市规划(多项式求逆)、51nod 1514 美妙的序列(性质+排列计数+生成函数多项式求逆优化)、P5205 【模板】多项式开根
- 拉格朗日插值法:P4781 【模板】拉格朗日插值、P4593 [TJOI2018]教科书般的亵渎、P3270 [JLOI2016]成绩比较、3453: tyvj 1858 XLkxc、P4463 [国家集训队] calc
- 生成函数:P2000 拯救世界(基础)、3028: 食物(基础)、3771: Triple(容斥原理)、P3978 [TJOI2015]概率论(生成函数推导(生成函数推导通项公式+注意通过代数手段观察函数之间的联系))、E. The Child and Binary Tree(生成函数+多项式开根+多项式求逆(注意是否有逆元))
- 指数型生成函数:Blocks、E. Transforming Sequence(组合计数dp 指数型生成函数+MTT优化)、NOI.AC #576. 序列(指数型生成函数优化DP)
- 概率生成函数:
12.博弈论(重点复习):
- 基础:
- SG函数:
13.计数类问题:#350. 「20190326模拟」Subset(分类讨论计数+简单容斥+cdq分治三维偏序)、#511. 「20190402 模拟」B(竞赛图的性质+图计数(简单容斥+组合))、5489: [Hnoi2019]鱼(极角排序+分类讨论计数(分数类优化精度))、复读数组(基本计数题(分类讨论))、树上队列(性质+树上拓扑序计数(正反拓扑序数量相同))
计算几何
1.二维几何基础:Morley's Theorem、That Nice Euler Circuit(欧拉几何定理)、Dog Distance、Triangle Fun(海伦公式)、Determine the Shape、Athletics Track、Triangle Hazard(梅涅劳斯定理)、Crossed Ladders(二分答案与三角函数)、#1336. 「20191109 模拟」小 w 的作业(二分+二维偏序(判断一个点是否在一条直线下的小trick——有向距离(叉积计算)))
2.圆和球:
- 圆:Viva Confetti(圆求交+极角排序)、Tangents(圆的切线(六种情况)(注意包含的那种情况分为圆心重合和不重合))、Fighting Against a Polygonal Monster(二分+圆与凸多边形交的面积)、Largest Empty Circle on a Segment(二分答案+圆和直线、线段和直线的交点+区间覆盖)、2D Geometry 110 in 1!(圆与直线的相关问题(注意计算相切的时候调大eps 计算圆和直线交点时用解析几何精度误差小))
- 球:Tunnelling the Earth(球面距离与经纬度转化为三维坐标)
3.二维几何算法:
- 凸包:P2742 【模板】二维凸包(凸包模板)、Board Wrapping(凸包+求凸包面积)、Airport(凸包+求解直线一般式(解方程)(减小精度误差))、The Great Divide(凸包+凸包相交判断(logn判断点是否在多边形内)(注意凸包判断斜率是while不是if!))、Wall(凸包+求圆弧长)、2829: 信用卡凸包(圆的小性质+凸包)
- 旋转卡壳:Squares(凸包+旋转卡壳)、Smallest Enclosing Rectangle(凸包+旋转卡壳)
- 半平面交:Most Distant Point from the Sea(二分答案+半平面交)、1007: [HNOI2008]水平可见直线(半平面交思想+单调栈)、Art Gallery(半平面交+求凸多边形面积)、Triathlon(根据题意列出不等式组+半平面交判断是否有解)