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.因子相

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值