Summary

感觉NOI之前肯定来不及把所有的题都一个个发成题解了。。
把做过的题随便溜一遍吧。。。。
这两天还会更新一大波内容

网络流:

1.和时间有关的问题:按照时间拆点,分层图

BZOJ1189 紧急疏散
SD二轮集训D3T3 第三题
BZOJ1570 Blue Mary的旅行
POJ3686 The Windy’s
BZOJ1070 修车
BZOJ2879 美食节

2.添加限流点来满足题目要求

BZOJ1189 紧急疏散
BZOJ4842 Delighting for a Cat

3.基本模型

(1).集合划分模型:一个点要么选S要么选T,选且只能选一个

BZOJ2127 happiness
Codeforces311E Biologist
SPOJ839 OPTM

(2).路径覆盖模型:拆成二分图

BZOJ1927 星际竞速
BZOJ2150 部落战争

(3).黑白染色:黑点和白点不能同时选择

BZOJ1324 Exca王者之剑
BZOJ3275 Number
BZOJ3158 千钧一发

(4).区间选择问题:把所有点连成一串

BZOJ4842 Delighting for a Cat
POJ3680 Intervals

(5).最大权闭合子图

BZOJ3438 小M的作物
BZOJ1565 植物大战僵尸
BZOJ1497 最大获利

(6).离散变量的取值

BZOJ3144 切糕

4.最小割

(1).使某两个点不联通的最小代价

BZOJ2521 最小生成树

(2).平面图最小割=对偶图最短路

BZOJ1001 狼抓兔子
BZOJ2007 海拔

(3).最小割唯一性判定

BZOJ1797 最小割

5.有上下界的网络流

(1).有上下界的最大流

BZOJ2406 矩阵
BZOJ2502 清理雪道
POJ3801 Crazy Circuits

(2).有上下界的费用流:优先保证费用最小

BZOJ4108 Catering
BZOJ3876 支线剧情

6.费用是流量的函数:拆边

BZOJ2597 剪刀石头布
BZOJ1070 修车
BZOJ2879 美食节

7.对棋盘进行行列拆点

BZOJ1059 矩阵游戏
BZOJ4554 游戏
SD一轮集训D4T1 棋盘
BZOJ3698 XWW的难题

8.消圈定理:费用流中出现负环一定存在更优解

BZOJ3597 方伯伯运椰子

9.混合图欧拉回路:流量平衡原理

BZOJ2095 Bridges

10.用最大流进行模拟

BZOJ1779 奶牛战争
Uva10779 Collector’s Problem

11.实数网络流

BZOJ3993 星际战争
BZOJ3130 费用流

DP:

1.树形DP

(1).树上最长链:dfs和树形DP。dfs不能用于有负边权的情况

BZOJ1912 巡逻
Codeforces592D Super M
BZOJ1509 逃学的小孩

(2).每个点的状态较少:f[u][0/1/2…]

BZOJ3257 树的难题
BZOJ1063 道路设计
BZOJ1907 树的路径覆盖

(3).从子树外面自顶向下推过来

BZOJ3566 概率充电器
HDU2196 Computer

(4).树的直径的性质

Codeforces455C Civilization
BZOJ2282 消防
BZOIJ3124 直径

(5).树形背包

BZOJ4033 T1
POJ1155 TELE

2.DP的顺序问题

(1).出现后效性的时候换一种顺序

Codeforces31E TV Game

(2).DP之前适当排序

Codeforces459E Pashmak and Graph

(3).不是从前往后而是数字从小到大

SD一轮集训D4T2 塔
BZOJ4321 queue2
Codeforces285E Positions in Permutations

3.记忆化搜索

BZOJ2461 符环
BZOJ1048 分割矩阵
BZOJ3895 取石子

4.带有环的DP:拆环或对端点讨论

BZOJ1737 午睡时间
BZOJ1040 骑士
BZOJ3242 快餐店

5.状压DP:集合内元素非常少

BZOJ1072 排列perm
BZOJ2669 局部极小值
BZOJ4197 寿司晚宴
Codeforces71E Nuclear Fusion

6.数位DP:开多维状态来记录,注意前导零的处理

BZOJ3530 数数
BZOJ1799 同类分布
BZOJ3134 numbers

7.优化

(1).bitset

Codeforces781D Axel and Marston in Bitland
BZOJ3687 简单题

(2).用最长上升子序列来代替最长公共子序列

BZOJ1264 基因匹配

(3).斜率优化

BZOJ3675 序列分割
BZOJ1492 货币兑换Cash
BZOj2726 任务安排

(4).矩阵乘法

Codeforces621E Wet Shark and Blocks
POJ3744 Scout YYF (分段
BZOJ1898 沼泽鳄鱼
BZOJ4417 超级跳马

(5).决策单调性

POJ1160 Post Office
HDU2829 Lawrence
HDU3480 Division
HDU3516 Tree Construction

(6).适当更改状态表示

BZOJNOIP十连测第二场B Market

(7).数据结构

BZOJ1835 基站选址

8.分组更新

BZOJ2423 最长公共子序列
BZOJ4197 寿司晚宴
BZOJNOIP十连测第八场B 降雷皇

9.斯坦纳树:分成子集的合并和移动两种方法转移

BZOJ4774 修路
BZOJ2595 游览计划
BZOJ3205 机器人
BZOJ4006 管道连接

贪心:

1.判断最优解中的必需元素

BZOJ2811 Guard
BZOJ3168 钙铁锌硒维生素
BZOJ3624 免费道路
BZOJ1178 会议中心

2.两边和中间合并,链表+堆

SD二轮集训D1T2 第二题
BZOJ1150 数据备份Backup
BZOJ2151 种树

3.用替换的思路来证明正确性

Codeforces798D Mike and distribution
BZOJ1658 滑水(同一条链上尽量不交叉

4.调整为某种极端情况

BZOJ2007 海拔
BZOJ1049 数字序列
BZOJ1385 Division expression
BZOJ3130 费用流

5.用优先队列维护前k优解

BZOJ1598 牛跑步
BZOJ4520 K远点对
BZOJ2006 超级钢琴
BZOJ3784 树上的路径

分块&&莫队

1.块内维护排过序的数组

BZOJ3337 ORZJRY I (块状链表)
SD三轮集训D4T3 Right
BZOJ4028 公约数数列
Codeforces551E GukiZ and GukiZiana

2.利用权值分块来缩小修改复杂度

BZOJ4129 Haruna’s Breakfast
BZOJ3236 作业
BZOJ3809 Gty的二逼妹子序列

3.用隔段时间重构的方法来代替块状链表

Codeforces455D Serega and Fun

4.用一个较大的数组记录每个块的信息

BZOJ2741 L

5.分成在同一块内/跨多个块等情况讨论

BZOJ3509 COUNTARI

6.删除操作不好进行的莫队:特殊的转移方法

BZOJ4358 permu

7.树上莫队

BZOJ3757 苹果树
SPOJ10707 COT2

8.利用分块平衡修改和询问的复杂度

BZOJ2388 旅行规划
Codeforces13E Holes

9.带修莫队

BZOJ2120 数颜色
BZOJ3052 糖果公园

均摊分析

1.每个位置只会被操作一次(合并,删除等)

BZOJ3333 排队计划
BZOJ4569 萌萌哒
BZOJ2959 长跑
BZOJ3252 攻略
BZOJ3319 黑白树

2.变化的情况是单调的

BZOJ4127 Abs(增量一定是正数
Codeforces444C DZY loves colors

数据结构

1.可并堆

(1).支持合并两个集合,动态维护最值

BZOJ2809 dispatching
SD三轮集训D1T2 Fiend

(2).求全局最值:对每个堆顶维护一个堆

BZOJ2333 棘手的操作

2.主席树

(1).求区间第k大

BZOJ3524 Courier
BZOJ3123 森林
SD三轮集训D1T1 Fable

(2).带有两重限制,其中一种满足前缀和性质

BZOJ3772 精神污染
SD二轮集训D1T1 第一题
BZOJ4556 字符串
BZOJ4408 神秘数
BZOJ3653 谈笑风生

(3).可持久化字典树

BZOJ4212 神牛的养成计划
BZOJ3261 最大异或和

3.线段树

(1).加法标记和乘法标记

BZOJ2962 序列操作

(2).比较复杂的update

BZOJ2957 楼房重建
POJ1151 Atlantis(矩形面积并
POJ1389 Area of Simple Polygons(矩形面积并
Codeforces811E Vladik and Entertaining Flags(在线段树内维护并查集

(3).最靠左,最靠右,总的

POJ3667 Hotel
BZOJ1756 小白逛公园

(4).维护连通性

BZOJ1018 堵塞的交通

(5).维护直线或线段:标记永久化

BZOJ4515 游戏
BZOJ1568 Blue Mary开公司

(6).统计子树信息:线段树合并

Codeforces666E Forensic Examination
BZOJ3317 雨天的尾巴
BZOJ4756 Promotion Counting
BZOJ4530 大融合

(7).区间标记是一个数列

BZOJ3221 树上询问(等差数列标记可以直接相加
Codeforces446C DZY loves Fibonacci numbers(类Fibonacci数列标记可以直接相加

(8).历史最大值

BZOJ3064 CPU监控

(9).在线段树内维护矩阵

HDU6013 Lotus and Thermodynamics

(10).二维线段树

POJ2155 Matrix
BZOJ1513 Tet-Tetris 3D

4.平衡树

(1).适当放宽维护信息的限制,比如允许出现空串等

BZOJ1500 维修数列

(2).维护dfs序:欧拉序列,括号序列等

BZOJ3729 Gty的游戏

5.并查集

(1).带有传递性质的信息维护问题

BZOJ1202 狡猾的商人
BZOJ4602 齿轮
BZOJ4195 程序自动分析

(2).维护无向连通关系

BZOJ4569 萌萌哒
BZOJ2303 方格染色
BZOJ3319 黑白树
BZOJ3076 反色刷

6.树链剖分

(1).单点询问与区间询问的转化

BZOJ3626 LCA
BZOJ1103 大都市meg

(2).针对轻儿子的标记

BZOJ3862 Little Devil I

7.K-D tree

(1).带有多重限制的区间询问

BZOJ3489 A simple rmq problem
BZOJ4154 Generating Synergy
BZOJ4066 简单题

(2).平面上的部分求和问题以及点对

BZOJ2850 巧克力王国
BZOJ4520 K远点对(用优先队列

8.LCT

(1).维护以删除时间为权值的最大生成树

BZOJ4025 二分图
BZOJ1453 双面棋盘

(2).动态的最小生成树

BZOJ2594 水管局长数据加强版

离线询问

1.倒序处理询问,删除变成添加

BZOJ1969 航线规划
BZOJ3319 黑白树

2.对询问排序然后动态维护

BZOJ3626 LCA
BZOJ3529 数表
BZOJ2186 沙拉公主的困惑

3.预先做一遍询问来处理信息

BZOJ2333 棘手的操作(把同一个连通块内的点编号成连续区间
BZOJ4530 大融合
BZOJ3545 Peaks

图论

1.生成树

(1).将图转化为生成树进行维护

BZOJ1969 航线规划

(2).一定在生成树上的边:小于等于它的边无法连通它的两个端点

BZOJ2521 最小生成树

(3).建立最小生成树的模型

BZOJ1601 灌水

(4).Kruskal重构树

BZOJ3551 Peaks加强版

(5).生成树上的边小于等于环上的最大边

BZOJ1937 最小生成树
BZOJ3118 Orz the MST

2.二分图匹配

(1).匈牙利算法

BZOJ1854游戏
BZOJ3168 钙铁锌硒维生素(求字典序最小的解:贪心
BZOJ1191 超级英雄

(2).带权匹配:二分图或KM

BZOJ2539 丘比特的烦恼
POJ3686 The Windy’s
POJ3565 Ants
BZOJ1937 最小生成树(利用KM顶标的性质
HDU2853 Assignment(注意没有完备匹配的情况

3.最短路

(1).最短路图是一个DAG

BZOJ1880 Elaxia的路线

(2).坐标系上的建图

BZOJ2541 冰原探险
BZOJ2304 寻路

4.Tarjan

(1).双连通分量:无向图中每一对点之间有两条不重复经过边或点的路

BZOJ2959 长跑

(2).缩点之后形成树结构或者DAG

Codeforces487E Tourists(新建代表连通分量的点来维护每个连通分量的信息
BZOJ1123 BLO
BZOJ3887 Grass Cownoisseur

5.2-SAT:一个变量的状态对另外的变量造成限制

BZOJ1823 满汉全席
BZOJ1997 Planar(结论:当边数大于点数*3的时候一定不是平面图

6.优化建图

(1).用差值转移的思想

BZOJ4289 Tax
BZOJ1283 序列

(2).向一段区间内的点连边:线段树

BZOJ4383 Pustynia
BZOJ3218 A+B Problem
BZOJ3073 Journeys

7.0-1分数规划

POJ2976 Dropping Tests
BZOJ3597 方伯伯运椰子(最优比率环
POJ2728 Desert King(最优比率生成树
POJ3155 Hard Life(最大密度子图

8.差分约束:最大化->最短路,最小化->最长路,注意隐藏限制

POJ3169 Layout
HDU3440 House Man
HDU3666 Matrix Problem
POJ1752 Advertisement
BZOJ3436 小K的农场
BZOJ1077 天平(对常数部分也进行限制
BZOJ2788 Festival

9.拓扑排序

BZOJ2584 memory
BZOJ2707 走迷宫
BZOJ1565 植物大战僵尸

10.邻接矩阵相关

BZOJNOIP十连测第一场B Tourist Attractions
BZOJ1875 HH去散步
BZOJ1297 迷路

11.最长反链=最小链覆盖

BZOJ1143 祭祀

字符串

1.KMP

(1).KMP树

BZOJ3670 动物园
BZOJ3620 似乎在梦中见过的样子

(2).字符串匹配

Codeforces631D Messenger
BZOJ3942 Censorting

2.AC自动机

(1).Fail树:所有包含x的串在x的结尾节点的子树中

BZOJ2754 喵星球上的点名
BZOJ3530 数数
BZOJ3881 Divljak

(2).前缀相同的串在Trie树上的同一个子树中

BZOJ4212 神牛的养成计划

3.后缀自动机

(1).Parent树:LCA代表最长公共后缀,出现过该串的节点在子树里

BZOJ3238 差异
BZOJ2555 Substring
Codeforces666E Forensic Examination
BZOJ4545 DQS的Trie
FJWC2017D3 recollection
BZOJ4556 字符串

(2).不同路径数=不同子串数目

BZOJ3998 弦论
SD一轮集训D5T1 字符串

(3).Right集合:当前子串的出现次数

Codeforces452E Three Strings
Codeforces427D Match&Catch

(4).当前节点的合法长度:[step[fa]+1,step[now]]

Codeforces235C Cyclical Request
BZOJ4516 生成魔咒

(5).广义后缀自动机

BZOJ3926 诸神眷顾的幻想乡

4.后缀数组

(1).单调栈维护height数组:计算每个数字作为LCP的区间

BZOJ3238 差异
BZOJ4199 品酒大会

(2).每个后缀贡献的不同子串:后缀长度-height[i],按照字典序排列

BZOJ3230 相似子串
BZOJ4310 跳蚤
BZOJ4516 生成魔咒

(3).对字符串进行分段,一定经过某几个关键点

BZOJ2534 L-gap字符串
BZOJ2119 股市的预测
POJ3693 Maximum repetition substring

(4).对每个点二分LCP为x的区间

BZOJ3277 串
BZOJ4556 字符串

(5).用height给后缀分组

POJ1743 Musical Theme
POJ3294 Life Forms

5.manacher

BZOJ2565 最长双回文串(以这个点结尾的最长回文串=覆盖这个点的最远回文中心
BZOJ3160 万径人踪灭

6.hash:快速判断子串相等

BZOJ4373 算数天才⑨与等差数列
BZOJ3574 抄卡组
BZOJ3555 企鹅QQ

数论

1.莫比乌斯反演

(1).没啥可说的画柿子吧

BZOJ2154 Crush的数字表格
BZOJ2301 Problem b

(2).用枚举因数代替枚举倍数,构造可以线筛的函数

BZOJ2820 YY的GCD
BZOJ4407 于神之怒加强版
BZOJ2693 jzptab

(3).不能筛的函数观察性质,考虑不同种类质因子的影响

BZOJ3309 DZY Loves Math

(4).杜教筛:构造容易求前缀和的函数

BZOJ3930 选数
BZOJ3944 Sum
51nod 1227 平均最小公倍数
BZOJ4176 Lucas的数论

(5).利用反演构造更容易求解的函数

51nod1355 斐波那契的最小公倍数
HDU5212 Code

(6).不一定要把式子全部化开

BZOJ3739 DZY Loves Math III
BZOJ2694 Lcm
Codeforces235E Number Challenge

2.因子相关

(1). d(ij)=p|iq|j[(p,q)==1]

BZOJ3994 约数个数和
BZOJ4176 Lucas的数论
Codeforces235E Number Challenge

(2).不同的质因子个数非常少

BZOJ3643 Phi的反函数
BZOJ4197 寿司晚宴

(3).前缀gcd最多变化log次

Codeforces457D CGCDSSQ
BZOJ4028 公约数数列

(4).大数质因子分解:pollard rho

POJ1811 Prime Test

(5).当直接做数字规模很大的时候考虑分解质因数

BZOJ1005 明明的烦恼
BZOJ1211 树的计数
Codeforces2B The least round way
BZOJ3907 网格

(6).约数的幂次和:讨论加入一个质因子的影响

BZOJ1968约数研究
BZOJ2813 奇妙的Fibonacci
BZOJ1845 Sumdiv(约数和计算公式: (1+pi+p2i+...+pkii)

(7).裴蜀定理:若 gcd(a,b)=d ,则 ax+by 是d的倍数

BZOJ1441 Min

(8).线段(0,0)-(x,y)上的整点数目是gcd(x,y)

BZOJ3505 数三角形
BZOJ2190 仪仗队
BZOJ2005 能量采集

3.同余

(1).同余方程 AxB(modC) 解的个数是 gcd(A,C)

BZOJ2219 数论之神(注意在变化式子过程中引起的值域变化

4.欧拉定理: aφ(p)1(modp,(a,p)=1)

BZOJ3884 上帝与集合的正确用法

5.数论函数

(1). i=1n[(i,n)==1]i=n+φ(n)+[n==1]2

51nod1227 平均最小公倍数
BZOJ2226 LCMSum

(2). i=1nj=1n[(i,j)==1]=2φ(n)1

HDU5780 gcd

(3). φ(n)=(pi1)pai1i

BZOJ1408 Robot
BZOJ3813 奇数国

6.中国剩余定理

Codeforces710D Two Arithmetic Progressions

7.原根:乘除化加减

BZOJ2219 数论之神
BZOJ3992 序列统计

组合数学

1.错排公式 f(i)=(i1)(f(i1)+f(i2))

BZOJ4517排列计数

2.斯特林数:n个不同的小球放到m个相同的盒子里

BZOJ4555 求和(通项公式 S(n,m)=1m!k=1m(1)kC(m,k)(mk)n

3.卡特兰数

COGS2287 疯狂的机器人(任意一个时刻前缀和不能为负
BZOJ2688 Green Hackenbush(二叉树的不同数目
BZOJ3907 网格

4.插板法:n个相同的小球放到m个不同的盒子里

BZOJ4402 Claris的剑
BZOJ2729 排队
BZOJ1272 Gate of Babylon
Codeforces768F Barrels and boxes
BZOJ4710 分特产
BZOJ4403 序列统计

5.Lucas定理:p进制分解,然后把结果相乘

(1).用Lucas定理算组合数

BZOJ1272 Gate of Babylon
BZOJ4403 序列统计

(2).用Lucas定理的原理进行p进制数位DP

SD三轮集训D6T1 A
BZOJ4591 超能粒子炮·改
BZOJ2629 binomial

6.组合数的连续合并

BZOJ1271 Gate of Babylon
BZOJ3027 Sweet

FFT

1.把式子里面的组合数拆开

COGS2287 疯狂的机器人

2.生成函数:可以使用整数运算律

BZOJ3771 Triple
BZOJ3625 小朋友和二叉树(解生成函数方程
COGS2259 异化多肽(无穷等比数列求和公式

3.多项式求逆与多项式开根:分治

51nod1514 美妙的序列
BZOJ3625 小朋友和二叉树

4.三模数NTT:最后合并的技巧

51nod1348 乘积之和
BZOJ2294 释迦

5.FFT常数很大,尽量减少次数

BZOJ3509 COUNTARI
BZOJ4827 礼物

6.用FFT进行字符串匹配

BZOJ4503 两个串
Codeforces528D Fuzzy Search
BZOJ4259 残缺的字符串

概率与期望

1.求概率转化为求当前情况数/总方案数

BZOJ3772 精神污染
BZOJ2752 高速公路

2.设未知数,转化为对系数的递推

HDU4035 Maze
ZOJ3329 One Person Game

3.条件概率,全概率公式

HDU4254 A Famous Game
POJ3071 Football

4.设未知数列方程

BZOJ2337 XOR和路径
BZOJ2707 走迷宫
Codeforces113D Museum
BZOJ3143 游走
HDU3076 ssworld VS DDD

5.平方的期望不等于期望的平方

BZOJ4318 OSU!

6.正推和倒推的区别

BZOJ2707 走迷宫
Codeforces540D Bad Luck Island
HDU4336 Card Collector
BZOJ1076 奖励关

高斯消元

1.求矩阵的逆:消成单位矩阵

BZOJ3168 钙铁锌硒维生素
SD一轮集训D6T1 字符串(用矩阵表示递推关系

2.求行列式:缩成上三角矩阵,维护符号

BZOJ4301 小Z的房间(用辗转相除法避免取模

3.线性基

(1).线性变化得出的数字个数或最大值等

BZOJ2844 albus就是要第一个出场
SD一轮集训D2T2 set(线性基更新时的顺序
BZOJ4269 再见Xor
BZOJ2322 梦想封印

(2).最大权值线性无关组

BZOJ2460 元素
BZOJ3105 新Nim游戏

4.利用矩阵的性质优化时间复杂度

SD三轮集训D1T2 Fiend

5.解方程组

BZOJ2337 XOR和路径
BZOJ2707 走迷宫
POJ2947 Widget Factory(无解判定

6.对自由元的处理

BZOJ1770 灯
BZOJ2466 树

博弈

1.每次操作将游戏分成多个独立部分:求sg函数时要异或起来

POJ2311 Cutting Game

2.阶梯博弈:找到奇数层和偶数层

BZOJ2739 Gty的游戏
HDU5996 dingyeye loves stone
POJ1704 Georgia and Bob
HDU3389 Game

3.利用对称性

POJ2484 A Funny Game
POJ1740 A New Stone Game

单调性

1.单调栈

(1).求以某个数为最值的最长区间

BZOJ1657 奶牛的歌声

(2).寻找左边和右边第一个比它大的元素

BZOJ1345 序列问题
BZOJ3956 Count

(3).求凸壳或凸包

BZOJ1007 水平可见直线

2.指针的单调移动,维护信息

BZOJ3670 动物园
BZOJ2937 建造酿酒厂
BZOJ4653 区间
BZOJ1132 Tro
BZOJ2238 数矩形

3.二分答案

(1).利用答案的单调性

BZOJ2406 矩阵
BZOJ2084 Antisymmetry
BZOJ3958 Mummy Madness

(2).利用答案变化的连续性

SD二轮集训D2T1 第一题

4.如果一个点现在不可能是答案,以后也不可能

BZOJ3011 Running Away From the Barn

计算几何

1.半平面交

(1).直观的模型

BZOJ1018 瞭望塔
HDU1632 Polygons

(2).解不等式

BZOJ2732 射箭
BZOJ4445 小凸想跑步
POJ2540 Hotter Colder

2.辛普森积分:利用线段覆盖求函数值

BZOJ1502 月下柠檬树
BZOJ2178 圆的面积并

3.旋转卡壳:凸包上的单调性

BZOJ1185 最小矩形覆盖
HDU2202 最大三角形
BZOJ1069 最大土地面积

4.按照极角或斜率排序

BZOJ1132 Tro
BZOJ2338 数矩形

5.最小圆覆盖:随机增量法

BZOJ1336 最小圆覆盖

6.根据条件列出直线方程转化为几何问题

BZOJ2388 旅行规划

7.Pick公式S=a+b/2-1:多边形内整点个数

POJ1265 Area
POJ2954 Triangle

容斥原理

1.全部-至少一个+至少两个-…=一个也没有的

BZOJ2393 Cirno的完美算数教室
BZOJ2669 局部极小值
BZOJ4455 小星星
BZOJ4487 染色问题
BZOJ3294 放棋子
BZOJ3129 方程
BZOJ4710 分特产
BZOJ4596 黑暗前的幻想乡

2.所有的-一个也没有的=至少有一个的

BZOJ1089 严格n元树
POJ2151 Check the difficulty of problems

3.至少有k个的-C(k+1,k)* 至少有k+1个的+C(k+2,k) *至少有k+2个的…=恰好有k个的

BZOJ3622 已经没有什么好害怕的了
BZOJ2839 集合计数
Codeforces285E Positions in Permutations
BZOJ2024 舞会
BZOJ3198 Spring

4.将“强制一部分满足要求,一部分不满足”转化为只强制一部分满足要求,然后容斥

BZOJ3622 已经没有什么好害怕的了
SD二轮集训D3T2 第二题
SD一轮集训D5T2 苹果树

5.补集转化

SD二轮集训D7T3 领主
BZOJ3513 idiots
BZOJ4430 赌骆驼

6.Min-Max容斥

51nod1355 斐波那契的最小公倍数

7.与质因子相关的容斥用 μ 做容斥系数

BZOJ2986 Non-Squarefree Numbers
Codeforces585E Present for Vitalik the Philatelist
Codeforces547C Mike and Foam

分治

1.树分治

(1).在子树中减去不合法的部分

BZOJ3697 采药人的路径
SD二轮集训D7T2 国王
BZOJ4598 模式字符串
BZOJ2599 Race

(2).直接构造答案

BZOJ3784 树上的路径

2.CDQ分治&&整体二分

(1).整体二分时把初始条件也拆成操作一起二分

BZOJ4538 网络
BZOJ2674 Attack

(2).用CDQ分治优化DP

BZOJ2726 任务安排
BZOJ1492 货币兑换Cash
BZOJ2244 拦截导弹

位运算

1.各位之间的独立性,分开计算

BZOJ2281 黑白棋
BZOJ2337 XOR和路径
BZOJ3668 起床困难综合征

2.bitset代替数组加速计算

BZOJ4810 由乃的玉米田
BZOJ3890 Meeting Time
BZOJ4811 由乃的OJ
BZOJNOIP十连测第一场B Tourist Attractions

带有多个条件

1.其中一个满足前缀和性质:主席树

BZOJ3489 A simple rmq problem
BZOJ3772 精神污染

2.都是区间查询:K-D tree

BZOJ3489 A simple rmq problem
BZOJ4154 Generating Synergy

3.带有偏序关系:CDQ分治

BZOJ2244 拦截导弹
SD二轮集训D7T3 领主
BZOJ3295 动态逆序对
BZOJ2253 纸箱堆叠
BZOJ4237 稻草人
BZOJ4553 序列
BZOJ4430 赌骆驼

4.将条件转化为平面上的问题

BZOJ4059 Non-boring sequences
SD二轮集训D1T1 第一题

搜索

1.打表发现合法状态非常少

BZOJ2393 Cirno的完美算数教室
Codeforces768E Game of Stones

2.01边权单源最短路:特殊的Bfs

BZOJ3073 Journeys
BZOJ NOIP十连测第一场C Walk

3.K短路:A*搜索

POJ2449 Remmarguts’ Date
BZOJ1598 牛跑步
BZOJ1975 魔法猪学院

4.虽然复杂度不科学但是实测非常快

BZOJ3033 太鼓达人

5.设置必经点来限制路径形态

POJ3182 The Grove

6.floodfill

BZOJ2936 降水

Trick

1.模意义下除以一个数x:把模数扩大x倍

BZOJ2962序列操作(中间更换模数一般是不资瓷的
BZOJ3027 Sweet

2.注意“超过一半”这个条件

BZOJ3524 Courier
BZOJ2456 mode

3.树上差分:路径统计变成子树统计

BZOJ3317 雨天的尾巴

4.先考虑最坏情况然后优化答案

BZOJ2064 分裂

5.将带有前缀和性质的询问拆分

BZOJ3626 LCA
BZOJ2301 Problem b
SD一轮集训D6T1 子序列

6.缩点:带有大量重复结构的东西

BZOJ4539 树
Codeforces631D Messenger

7.分成较大规模和较小规模两种情况讨论,设计两种时间复杂度不同的算法

Codeforces348C Subset Sums
UOJ#246 套路

8.转化成前缀和或后缀和

BZOJ4866 由乃的商场之旅
Codeforces671E Xor and Favorite Numbers
BZOJ4542 大数
BZOJ3261 最大异或和
BZOJNOIP十连测第三场A 平均数

9.用优先队列代替set维护动态最值

BZOJ4538 网络

10.假设已经求出了1..n-1的结果,设计递推式

51nod1514 美妙的序列
BZOJ3456 城市规划
BZOJ3625 小朋友和二叉树

11.适当的枚举规模较小的部分

BZOJ4827 礼物
BZOJ1799 同类分布
BZOJ1077 天平
BZOJ1132 Tro
BZOJ1088 扫雷
Codeforces486D Valid Sets
SD一轮集训D1T1 sum

12.列方程,寻找定量关系

BZOJ1045 糖果传递
POJ3565 Ants
BZOJ2721 樱花

13.把第一关键字乘以一个常数然后加入第二关键字

HDU2853 Assignment
POJ2987 Firing
SPOJ839 OPTM

14.对序列差分

BZOJ2119 股市的预测
BZOJ4698 Sandy的卡片

15.高精度数的p进制分解

BZOJ2629 binomial

16.利用“趋近于无穷”的条件

Codeforces698C LRU

17.利用“1”和“-1”

BZOJ2209 括号序列
BZOJ2653 middle
BZOJ1303 中位数图

Others

1.极大子矩形:极大化枚举思想和悬线法

Vijos1055 奶牛浴场
BZOJ1057 棋盘制作

2.树链的并:按照dfs序排序,减去相邻点的lca

BZOJ2754 喵星球上的点名
SD二轮集训D2T3 第三题
BZOJ3881 Divljak

3.求区间颜色数:离线询问+树状数组

BZOJ2754 喵星球上的点名
BZOJ2743 采花

4.模拟退火:当不确定性较大的时候可以贪心

BZOJ2428 均分数据

5.扫描线:考虑每个操作的影响或相邻操作之间的不变性

(1).矩形面积并

POJ1151 Atlantis
POJ1389 Area of Simple Polygons
BZOJ3958 Mummy Madness
BZOJ4059 Non-boring sequences

(2).分段统计答案

BZOJ4422 Cow Confinement
BZOJ1818 内部白点
BZOJ2161 布娃娃
BZOJ1845 三角形面积并
BZOJ4548 小奇的糖果

(3).相邻扫描线之间的有序性

BZOJ2584 memory
BZOJ4561 圆的异或并

6.Burnside引理:求不动点的个数

HDU2481 Toy
BZOJ1488 图的同构
HDU2865 Birthday Toy

7.prufer序列:给定度数要求的生成树数目

BZOJ1005 明明的烦恼
BZOJ1211 树的计数

8.基尔霍夫矩阵:图的生成树数目

BZOJ4031 小Z的房间
BZOJ1430 小猴打架
SD一轮集训D5T2 苹果树
BZOJ4596 黑暗前的幻想乡

9.倍增

(1).用倍增划分区间来减少操作次数

BZOJ1178 会议中心
BZOJ4569 萌萌哒

(2).每次操作相同的时候用倍增加速

SD一轮集训D1T1 sum
BZOJ3992 序列统计
BZOJ1706 奶牛接力跑

10.逆序对:

(1).每个位置定义贡献:后面小于它的或者前面大于它的

BZOJ3333 排队计划
BZOJ2141 排队
BZOJ3295 动态逆序对
BZOJ2212 Tree Rotations

(2).冒泡排序的交换次数

Tsinsen1043 完美的代价
BZOJ2789 Letters

11.线性规划

BZOJ3118 Orz the MST
BZOJ3265 志愿者招募加强版

12.dsu on tree

(1).子树统计问题

Codeforces246E Blood Cousins Return
Codeforces357D Tree and Queries

(2).路径统计问题

Codeforces741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(题目名字好长

13.三分

(1).单峰函数

BZOJ2388 旅行规划
POJ3301 Texas Trip

(2).三分套三分

BZOJ1857 传送带

14.中位数相关

BZOJ1112 BLO

15.启发式合并

BZOJ3123 森林
BZOJ1483 梦幻布丁
BZOJ2733 永无乡

你可能感兴趣的:(我也不知道该算什么分类)