推荐阅读:
网络流基础知识和Dinic:http://www.cnblogs.com/SYCstudio/p/7260613.html#3848907
建模:https://www.cnblogs.com/Paul-Guderian/p/6657639.html
二分图的一些性质的理解和证明:http://blog.csdn.net/flynn_curry/article/details/52966283
最小割模型在信息学竞赛中的应用:https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html
基础知识:
网络流的大概分类:
最大流(最小割)
费用流
有上下界的网络流
网络流的相关定义:
- 源点:有n个点,有m条有向边,有一个点很特殊,只出不进,叫做源点。
- 汇点:另一个点也很特殊,只进不出,叫做汇点。
- 容量和流量:每条有向边上有两个量,容量和流量,容量通常用cap表示,流量则通常是flow
- 残量网络:对于每一条边还能再有多少流量经过。
- 增广路径:残量网络中从源点到汇点的一条路径,满足路径上每一条边都还可以有流量经过。
通常可以把这些边想象成水管,流量就是这条水管的水流量,容量就是这条水管可承受的最大水流量,所以流量<=容量。而对于每个不是源点和汇点的点来说,可以类比的想象成没有存储功能的水管交界处,流入水量=流出水量。
一些需要注意的地方:
对于一条单向的道路:u->v,在实际建图的时候需要建两条边,正向边是u->v,容量是cap,反向边是v->u,容量为0,为了退流。
在有费用的时候,正向边费用就为实际费用,反向边费用是正向边费用的相反数。
每次第i条边流量+x的时候,他的反边流量-x。
最大流:
做法:
EK、ISAP、Dinic
EK:
反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束。
在寻找增广路径时,可以用BFS来找,并且更新残留网络的值。
而找到delta后,则使最大流值加上delta,更新为当前的最大流值。
EK可以解决最大流问题,然而它有一个不可避免的缺陷,就是在极端情况下每次只能将流扩大1(假设容量、流为整数),这样会造成性能上的很大问题。
解决这个问题有一个复杂得多的算法,就是预推进算法,我不知道是什么,听说只有题解中会出现这个算法的代码,效率和Dinic差不多。
ISAP:。。。。
Dinic:
对于残量网络,我们用BFS对节点分层,我们规定每次DFS走增广路的时候只能从第i层的节点走到第i+1层节点,这样可以比较快。
当前弧优化:注意在DFS中用cur[x]表示当前应该从x的编号为cur[x]的边开始访问,也就是说从1到cur[x]-1的这些边都不用再访问了,相当于删掉了,达到了满流。
DFS(x,a)表示当前在x节点,有流量a,到终点t的最大流。当前弧优化在DFS里的关键点在if(a==0) break;
也就是说对于结点x,如果x连接的前面一些弧已经能把a这么多的流量都送到终点,就不需要再去访问后面的一些弧了,当前未满的弧和后面未访问的弧等到下次再访问结点x的时候再去增广。
注意每次DFS前都要把cur给memcpy成fir(head)
小学生都知道的一些性质:
最大流等于最小割
平面图的最大流等于其对偶图的最短路
二分图中最大流等于最大匹配数
初中生都知道的一些性质:
二分图最小顶点覆盖等于最大匹配
首先,我们证明不存在小于最大匹配数的最小顶点覆盖数。
这是显然的,因为这些顶点根本无法覆盖所有的匹配边。
接下来证明存在等于最大匹配数的最小顶点覆盖数。
首先证明,在最大匹配中,每条匹配边连接的两个顶点a,b最多只有一个与非匹配点有连边。
用反证法:假设a与c,b与d这件都有边,且c,d都不是匹配点,
则可以去掉连接a,b的匹配边,加上连接a,c和连接b,d的匹配边,匹配数可以+1,这与最大匹配矛盾。
这样,我们构造这样一个顶点集合:
对于每条匹配边,选择其连接的两个点中的一个
(如果两个点有与非匹配点有连边的点,则选那个点;否则随便选一个)。
这个集合中有最大匹配数个点。
我们证明:这个点集能覆盖所有的边。
若一条边是匹配边,则其显然被覆盖
若一条边不是匹配边:
1)若其与某匹配顶点有连边,则该匹配顶点必在我们构造的点集中,所以该边被覆盖
2)若其连接着两个非匹配点,则可以增加这条边为匹配边,是匹配数+1,这与最大匹配矛盾,故此情况不成立
所以,这个点集能覆盖所有的边。
二分图最大独立集=所有顶点数-最小顶点覆盖=最小边覆盖
二分图中最小边覆盖=顶点数-最小顶点覆盖(最大匹配)
证明:
设最大匹配数为m,总顶点数为n,
设能干掉两个点的边有a条,能干掉一个点的边有b条
那么2a+b=n,最小边覆盖=a+b=n-a。
也就是我们需要找到a最大值。
而a的最大值就是最大匹配数。
二分图中最大独立集+最小顶点覆盖(最大匹配)=顶点数
证明:
既然最小顶点覆盖就是最大匹配的那些顶点,那么剩下的节点就是相对孤立的点。
而这些相对孤立的点两两肯定没有边,不就是最大独立集吗?
那这样所有的点就都考虑到了,两者相加就变成了所有顶点数。
二分图最小路径覆盖数=点数-最小路径覆盖中的边数=点数-最大匹配。
费用流:
给边加上费用,求最大流时费用的最小值,该类问题就是最小费用最大流问题。
在残量网络上跑最短路(路径长度为费用),每次对于最短路进行増广就可以保证最后费用最小了。
下面我们进入正题。
有上下界的网络流:
无源汇有上下界可行流
sgu194 Reactor Cooling
给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质
并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。
建图模型: 以前写的最大流默认的下界为0,而这里的下界却不为0,所以我们要进行再构造让每条边的下界为0,这样做是为了方便处理。
对于每根管子有一个上界容量up和一个下界容量low,我们让这根管子的容量下界变为0,上界为up-low。
可是这样做了的话流量就不守恒了,为了再次满足流量守恒,即每个节点"入流=出流”,我们增设一个超级源点st和一个超级终点sd。我们开设一个数组du[]来记录每个节点的流量情况。
du[i]=in[i](i节点所有入流下界之和)-out[i](i节点所有出流下界之和)。
当du[i]大于0的时候,st到i连一条流量为du[i]的边。
当du[i]小于0的时候,i到sd连一条流量为-du[i]的边。
最后对(st,sd)求一次最大流即可,当所有附加边全部满流时(即maxflow==所有du[]>0之和),有可行解。
有源汇有上下界最大流
zoj3229 Shoot the Bullet
一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝给Ci个女神拍照,每天拍照数不能超过Di张,
而且给这Ci个女神中每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和至少为Gi,
如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照;否则输出-1
增设源点S,汇点T,S到第i天连一条上界为Di下界为0的边,每个女神到T连一条下界为Gi上界为INF的边,
对于每一天,当天到第i个女孩连一条[Li,Ri]的边。
我们只需要考虑把有源汇变成无源汇就可以按照无源汇有上下界的方法做可行流了。
具体做法就是从T到S连一条下界为0,上界为INF的边。
当有可行流时,删除超级源点ss和超级终点dd,再对(S,T)进行一次最大流,此时得到的maxflow则为题目的解。
为什么呢?因为第一次maxflow只是求得所有满足下界的流量,而残留网络(S,T)路上还有许多自由流(没有和超级源点和超级汇点连接的边)没有流满,
所有最终得到的maxflow=(第一次流满下界的流+第二次能流通的自由流)。
有源汇有上下界最小流
模型:现在的网络有一个源点S和汇点T,求出一个流使得源点的总流出量等于汇点的总流入量,其他的点满足流量守恒,而且每条边的流量满足上界和下界限制.在这些前提下要求总流量最小.
依然是先跑出一个有源汇可行流.这时候的流也不一定是最小的.
假如我们能在残量网络上找到一条S-T的路径使得去掉这条路径上的流量之后仍然满足流量下限,我们就可以得到一个更小的流.
这时候需要我们再理解一下dinic的反向边.反向边的流量增加等价于正向边的的流量减少.
因此我们在残量网络上找出T到S的流就相当于减小了S到T的流,
因此我们在跑出可行流的残量网络上跑T-S最大流,用可行流的大小减去这一次T-S最大流的大小就是最小流的大小.
练习题:bzoj2502 清理雪道
有源汇有上下界费用流
首先建立附加源点ss和附加汇点tt
对于原图中的边x->y,若限制为[b,c],费用为cost,那么连边x->y,流量为c-b,费用为cost
对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和
若d(i)>0,那么连边ss->i,流量为d(i),费用为0
若d(i)<0,那么连边i->tt,流量为-d(i),费用为0
连边t->s,流量为inf,费用为0
跑ss->tt的最小费用最大流,答案即为(求出的费用+原图中边的下界*边的费用)
这里的答案是指可行流的最小费用而不是可行最大流的最小费用。
网络流有什么用?
做一些可以转化成网络流的问题(说了等于没说)
解决许多多约束最优化的问题。
例题:
网络流24题 方格取数
网络流24题 最长递增子序列
网络流24题 最小路径覆盖
网络流24题 魔术球
网络流24题 太空飞行计划
网络流24题 星际转移
tyvj1338 QQ农场
X的农场和游戏中略有不同。土地实际上是一个边长为N的正方形,由N*N块土地组成。
在每块土地上,都种有一种农作物。如果他选择摘取一块土地上的农作物,就能获得一个固定的利润(当然,这个利润是正数)。不同土地上的利润多半是不同的。
贪心的Sandytea本想摘取所有土地上的农作物。但是正当他准备行动时,却被告知不允许摘取了两块有公共边的土地上的作物,否则就会被主人的狗发现。
Sandytea想知道,在不被狗抓住的前提下,他能获得的最大利益是多少。
$N \leq 200 , W_{i,j} \leq 100$
bzoj1412 狼和羊的故事
有一个智障儿童把狼和羊养在了一起,你现在需要用最短的篱笆把狼和羊分开。
羊狼圈可以看作一个n*m个矩阵格子,这个矩阵的边缘已经装上了篱笆。
你修建的篱笆首先得保证不能改变狼羊的所属领地,再就是篱笆必须修筑完整,也就是说必须修建在单位格子的边界上并且不能只修建一部分。
$n,m \leq 100$
俱乐部的人时常在一起玩这Dicing游戏然后评选出玩得最好的人.
现在一共有N个人,M场比赛,你知道每场比赛的两名选手。
求在最好的情况下,玩得最好的人最少只需要赢几场就可以赢得冠军,即赢的最多的那个家伙最少会赢多少场.
$N \leq 1e4 , M \leq 1e4$
网络流24题 深海机器人问题
网络流24题 餐巾计划
网络流24题 最长 k 可重区间集
bzoj1070 修车
同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同
的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最
小。 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。
$N \leq 60 , M \leq 9 , T \leq 1000$
bzoj3442 学习小组
共有n个学生,m个学习小组,每个学生有一定的喜好,只愿意参加其中的一些学习小组,
但是校领导为学生考虑,规定一个学生最多参加k个学习小组。
财务处的大叔就没那么好了,他想尽量多收钱,因为每个学生参加学习小组都要交一定的手续费,不同的学习小组有不同的手续费。
然而,事与愿违,校领导又决定对学习小组组织者进行奖励,若有a个学生参加第i个学习小组,那么给这个学习小组组织者奖励Ci*a^2元。
在参与学生(而不是每个学习小组的人数总和)尽量多的情况下,求财务处最少要支出多少钱(若为负数,则输出负数)(支出=总奖励费-总手续费)。
$n \leq 100 , m \leq 90$
vijos1891 学姐的逛街计划
doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.
偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天.
doc 很忧伤, 因为他还要陪学姐去逛街呢.
后来, doc发现, 如果自己哪一天智商更高一些, 陪学姐逛街会得到更多的好感度.
现在 doc 决定做一个实验来验证自己的猜想, 他拜托 小岛 预测出了 自己 未来 3n 天中, 每一天的智商.
doc 希望在之后的 3n 天中选出一些日子来陪学姐逛街, 要求在不违反校规的情况下, 陪学姐逛街的日子自己智商的总和最大.
$n \leq 200 , k \leq 10$
bzoj1061 志愿者招募
申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。
布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者。
经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人。
布布通过了解得知,一共有M 类志愿者可以招募。其中第i 类可以从第Si 天工作到第Ti 天,招募费用是每人Ci 元。
为了出色地完成自己的工作,布布希望用尽量少的费用招募足够的志愿者,但这并不是他的特长!于是布布找到了你,希望你帮他设计一种最优的招募方案。
$N \leq 1000 , M \leq 10000$
(https://www.byvoid.com/zhs/blog/noi-2008-employee)
同类题练习:bzoj4842 Delight for a Cat
ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜,因此一个小时内他只能选择睡觉或者打隔膜,当然他也必须选择睡觉或打隔膜,对于每一个小时,他选择睡觉或打隔膜的愉悦值是不同的,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时又有一个奥妙重重的规定:对于任意一段连续的k小时,ls必须至少有t1时间在睡觉,t2时间在打隔膜。那么ls想让他获得的愉悦值尽量大,他该如何选择呢?
$t1+t2 \leq k \leq n \leq 1000$
test 1212night A
test 1213 T2 百步穿杨
网络流24题: https://loj.ac/problems/search?keyword=%E7%BD%91%E7%BB%9C%E6%B5%81
代码: https://www.zybuluo.com/shixinyi/note/985294
网络流24题
问题编号 | 问题名称 | 问题模型 | 转化模型 |
1 | 飞行员配对方案问题 | 二分图最大匹配 | 网络最大流 |
2 | 太空飞行计划问题 | 最大权闭合图 | 网络最小割 |
3 | 最小路径覆盖问题 | 有向无环图最小路径覆盖 | 网络最大流 |
4 | 魔术球问题 | 有向无环图最小路径覆盖 | 网络最大流 |
5 | 圆桌问题 | 二分图多重匹配 | 网络最大流 |
6 | 最长递增子序列问题 | 最多不相交路径 | 网络最大流 |
7 | 试题库问题 | 二分图多重匹配 | 网络最大流 |
8 | 机器人路径规划问题 | 最小费用最大流 | |
9 | 方格取数问题 | 二分图点权最大独立集 | 网络最小割 |
10 | 餐巾计划问题 | 线性规划网络优化 | 最小费用最大流 |
11 | 航空路线问题 | 最长不相交路径 | 最小费用最大流 |
12 | 软件补丁问题 | 最小转移代价 | 最短路径 |
13 | 星际转移问题 | 网络判定 | 网络最大流 |
14 | 孤岛营救问题 | 分层图最短路径 | 最短路径 |
15 | 汽车加油行驶问题 | 分层图最短路径 | 最短路径 |
16 | 数字梯形问题 | 最大权不相交路径 | 最小费用最大流 |
17 | 运输问题 | 网络费用流量 | 最小费用最大流 |
18 | 分配问题 | 二分图最佳匹配 | 最小费用最大流 |
19 | 负载平衡问题 | 最小代价供求 | 最小费用最大流 |
20 | 深海机器人问题 | 线性规划网络优化 | 最小费用最大流 |
21 | 最长k可重区间集问题 | 最大权不相交路径 | 最小费用最大流 |
22 | 最长k可重线段集问题 | 最大权不相交路径 | 最小费用最大流 |
23 | 火星探险问题 | 线性规划网络优化 | 最小费用最大流 |
24 | 骑士共存问题 | 二分图最大独立集 | 网络最小割 |
参考资料:
https://wenku.baidu.com/view/849a54c0cc22bcd126ff0cba.html
https://artofproblemsolving.com/community/c1368h1020435
https://www.cnblogs.com/kane0526/archive/2013/04/05/3001108.html
https://www.cnblogs.com/liu-runda/p/6262832.html
http://blog.csdn.net/clove_unique/article/details/54884437
https://www.cnblogs.com/Currier/p/6535787.html
http://blog.csdn.net/flynn_curry/article/details/52966283
https://www.byvoid.com/zhs/blog/noi-2008-employee
集训队论文:
组合数学 | 计数与统计 | 2001 - 符文杰:《Pólya原理及其应用》 |
2003 - 许智磊:《浅谈补集转化思想在统计问题中的应用》 | ||
2007 - 周冬:《生成树的计数及其应用》 | ||
2008 - 陈瑜希《Pólya计数法的应用》 | ||
数位问题 | 2009 - 高逸涵《数位计数问题解法研究》 | |
2009 - 刘聪《浅谈数位类统计问题》 | ||
动态统计 | 2004 - 薛矛:《解决动态统计问题的两把利刃》 | |
2007 - 余江伟:《如何解决动态统计问题》 | ||
博弈 | 2002 - 张一飞:《由感性认识到理性认识——透析一类搏弈游戏的解答过程》 | |
2007 - 王晓珂:《解析一类组合游戏》 | ||
2009 - 曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》 | ||
2009 - 方展鹏《浅谈如何解决不平等博弈问题》 | ||
2009 - 贾志豪《组合游戏略述——浅谈SG游戏的若干拓展及变形》 | ||
母函数 | 2009 - 毛杰明《母函数的性质及应用》 | |
拟阵 | 2007 - 刘雨辰:《对拟阵的初步研究》 | |
线性规划 | 2007 - 李宇骞:《浅谈信息学竞赛中的线性规划——简洁高效的单纯形法实现与应用》 | |
置换群 | 2005 - 潘震皓:《置换群快速幂运算研究与探讨》 | |
问答交互 | 2003 - 高正宇:《答案只有一个——浅谈问答式交互问题》 | |
猜数问题 | 2003 - 张宁:《猜数问题的研究:<聪明的学生>一题的推广》 | |
2006 - 龙凡:《一类猜数问题的研究》 | ||
数据结构 | 数据结构 | 2005 - 何林:《数据关系的简化》 |
2006 - 朱晨光:《基本数据结构在信息学竞赛中的应用》 | ||
2007 - 何森:《浅谈数据的合理组织》 | ||
2008 - 曹钦翔《数据结构的提炼与压缩》 | ||
结构联合 | 2001 - 高寒蕊:《从圆桌问题谈数据结构的综合运用》 | |
2005 - 黄刚:《数据结构的联合》 | ||
块状链表 | 2005 - 蒋炎岩:《数据结构的联合——块状链表》 | |
2008 - 苏煜《对块状链表的一点研究》 | ||
动态树 | 2006 - 陈首元:《维护森林连通性——动态树》 | |
2007 - 袁昕颢:《动态树及其应用》 | ||
左偏树 | 2005 - 黄源河:《左偏树的特点及其应用》 | |
跳表 | 2005 - 魏冉:《让算法的效率“跳起来”!——浅谈“跳跃表”的相关操作及其应用》 | |
2009 - 李骥扬《线段跳表——跳表的一个拓展》 | ||
SBT | 2007 - 陈启峰:《Size Balance Tree》 | |
线段树 | 2004 - 林涛:《线段树的应用》 | |
单调队列 | 2006 - 汤泽:《浅析队列在一类单调性问题中的应用》 | |
哈希表 | 2005 - 李羽修:《Hash函数的设计优化》 | |
2007 - 杨弋:《Hash在信息学竞赛中的一类应用》 | ||
Splay | 2004 - 杨思雨:《伸展树的基本操作与应用》 | |
图论 | 图论 | 2005 - 任恺:《图论的基本思想及方法》 |
模型建立 | 2004 - 黄源河:《浅谈图论模型的建立与应用》 | |
2004 - 肖天:《“分层图思想”及其在信息学竞赛中的应用》 | ||
网络流 | 2001 - 江鹏:《从一道题目的解法试谈网络流的构造与算法》 | |
2002 - 金恺:《浅谈网络流算法的应用》 | ||
2007 - 胡伯涛:《最小割模型在信息学竞赛中的应用》 | ||
2007 - 王欣上:《浅谈基于分层思想的网络流算法》 | ||
2008 - 周冬《两极相通——浅析最大—最小定理在信息学竞赛中的应用》 | ||
最短路 | 2006 - 余远铭:《最短路算法及其应用》 | |
2008 - 吕子鉷《浅谈最短径路问题中的分层思想》 | ||
2009 - 姜碧野《SPFA算法的优化及应用》 | ||
欧拉路 | 2007 - 仇荣琦:《欧拉回路性质与应用探究》 | |
差分约束系统 | 2006 - 冯威:《数与图的完美结合——浅析差分约束系统》 | |
平面图 | 2003 - 刘才良:《平面图在信息学中的应用》 | |
2007 - 古楠:《平面嵌入》 | ||
2-SAT | 2003 - 伍昱:《由对称性解2-SAT问题》 | |
最小生成树 | 2004 - 吴景岳:《最小生成树算法及其应用》 | |
2004 - 汪汀:《最小生成树问题的拓展》 | ||
二分图 | 2005 - 王俊:《浅析二分图匹配在信息学竞赛中的应用》 | |
Voronoi图 | 2006 - 王栋:《浅析平面Voronoi图的构造及应用》 | |
偶图 | 2002 - 孙方成:《偶图的算法及应用》 | |
树 | 树 | 2002 - 周文超:《树结构在程序设计中的运用》 |
2005 - 栗师:《树的乐园——一些与树有关的题目》 | ||
路径问题 | 2009 - 漆子超《分治算法在树的路径问题中的应用》 | |
最近公共祖先 | 2007 - 郭华阳:《RMQ与LCA问题》 | |
划分问题 | 2004 - 贝小辉:《浅析树的划分问题》 | |
数论 | 欧几里得算法 | 2009 - 金斌《欧几里得算法的应用》 |
同余方程 | 2003 - 姜尚仆:《模线性方程的应用——用数论方法解决整数问题》 | |
搜索 | 搜索 | 2001 - 骆骥:《由“汽车问题”浅谈深度搜索的一个方面——搜索对象与策略的重要性》 |
2002 - 王知昆:《搜索顺序的选择》 | ||
2005 - 汪汀:《参数搜索的应用》 | ||
启发式 | 2009 - 周而进《浅谈估价函数在信息学竞赛中的应用》 | |
优化 | 2003 - 金恺:《探寻深度优先搜索中的优化技巧——从正方形剖分问题谈起》 | |
2003 - 刘一鸣:《一类搜索的优化思想——数据有序化》 | ||
2006 - 黄晓愉:《深度优先搜索问题的优化技巧》 | ||
背包问题 | 2009 - 徐持衡《浅谈几类背包题》 | |
匹配 | 2004 - 楼天城:《匹配算法在搜索问题中的巧用》 | |
概率 | 概率 | 2009 - 梅诗珂《信息学竞赛中概率问题求解初探》 |
数学期望 | 2009 - 汤可因《浅析竞赛中一类数学期望问题的解决方法》 | |
字符串 | 字符串 | 2003 - 周源:《浅析“最小表示法”思想在字符串循环同构问题中的应用》 |
多串匹配 | 2004 - 朱泽园:《多串匹配算法及其启示》 | |
2006 - 王赟:《Trie图的构建、活用与改进》 | ||
2009 - 董华星《浅析字母树在信息学竞赛中的应用》 | ||
后缀数组 | 2004 - 许智磊:《后缀数组》 | |
2009 - 罗穗骞《后缀数组——处理字符串的有力工具》 | ||
字符串匹配 | 2003 - 饶向荣:《病毒的DNA———剖析一道字符匹配问题解析过程》 | |
2003 - 林希德:《求最大重复子串》 | ||
动态规划 | 动态规划 | 2001 - 俞玮:《基本动态规划问题的扩展》 |
2006 - 黄劲松:《贪婪的动态规划》 | ||
2009 - 徐源盛《对一类动态规划问题的研究》 | ||
状态压缩 | 2008 - 陈丹琦《基于连通性状态压缩的动态规划问题》 | |
状态设计 | 2008 - 刘弈《浅谈信息学中状态的合理设计与应用》 | |
树形DP | 2007 - 陈瑜希:《多角度思考创造性思维——运用树型动态规划解题的思路和方法探析》 | |
优化 | 2001 - 毛子青:《动态规划算法的优化技巧》 | |
2003 - 项荣璟:《充分利用问题性质——例析动态规划的“个性化”优化》 | ||
2004 - 朱晨光:《优化,再优化!——从《鹰蛋》一题浅析对动态规划算法的优化》 | ||
2007 - 杨哲:《凸完全单调性的加强与应用》 | ||
计算几何 | 立体几何 | 2003 - 陆可昱:《长方体体积并》 |
2008 - 高亦陶《从立体几何问题看降低编程复杂度》 | ||
计算几何思想 | 2004 - 金恺:《极限法——解决几何最优化问题的捷径》 | |
2008 - 程芃祺《计算几何中的二分思想》 | ||
2008 - 顾研《浅谈随机化思想在几何问题中的应用》 | ||
圆 | 2007 - 高逸涵:《与圆有关的离散化》 | |
半平面交 | 2002 - 李澎煦:《半平面交的算法及其应用》 | |
2006 - 朱泽园:《半平面交的新算法及其实用价值》 | ||
矩阵 | 矩阵 | 2008 - 俞华程《矩阵乘法在信息学中的应用》 |
高斯消元 | 2002 - 何江舟:《用高斯消元法解线性方程组》 | |
数学方法 | 数学思想 | 2002 - 何林:《猜想及其应用》 |
2003 - 邵烜程:《数学思想助你一臂之力》 | ||
数学归纳法 | 2009 - 张昆玮《数学归纳法与解题之道》 | |
多项式 | 2002 - 张家琳:《多项式乘法》 | |
数形结合 | 2004 - 周源:《浅谈数形结合思想在信息学竞赛中的应用》 | |
黄金分割 | 2005 - 杨思雨:《美,无处不在——浅谈“黄金分割”和信息学的联系》 | |
其他算法 | 遗传算法 | 2002 - 张宁:《遗传算法的特点及其应用》 |
2005 - 钱自强:《关于遗传算法应用的分析与研究》 | ||
信息论 | 2003 - 侯启明:《信息论在信息学竞赛中的简单应用》 | |
染色与构造 | 2002 - 杨旻旻:《构造法——解题的最短路径》 | |
2003 - 方奇:《染色法和构造法在棋盘上的应用》 | ||
一类问题 | 区间 | 2008 - 周小博《浅谈信息学竞赛中的区间问题》 |
序 | 2005 - 龙凡:《序的应用》 | |
系 | 2006 - 汪晔:《信息学中的参考系与坐标系》 | |
物理问题 | 2008 - 方戈《浅析信息学竞赛中一类与物理有关的问题》 | |
编码与译码 | 2008 - 周梦宇《码之道—浅谈信息学竞赛中的编码与译码问题》 | |
对策问题 | 2002 - 骆骥:《浅析解“对策问题”的两种思路》 | |
优化 | 算法优化 | 2002 - 孙林春:《让我们做得更好——从解法谈程序优化》 |
2004 - 胡伟栋:《减少冗余与算法优化》 | ||
2005 - 杨弋:《从<小H的小屋>的解法谈算法的优化》 | ||
2006 - 贾由:《由图论算法浅析算法优化》 | ||
程序优化 | 2006 - 周以苏:《论反汇编在时间常数优化中的应用》 | |
2009 - 骆可强《论程序底层优化的一些方法与技巧》 | ||
语言 | C++ | 2004 - 韩文弢:《论C++语言在信息学竞赛中的应用》 |
策略 | 策略 | 2004 - 李锐喆:《细节——不可忽视的要素》 |
2005 - 朱泽园:《回到起点——一种突破性思维》 | ||
2006 - 陈启峰:《“约制、放宽”方法在解题中的应用》 | ||
2006 - 李天翼:《从特殊情况考虑》 | ||
2007 - 陈雪:《问题中的变与不变》 | ||
2008 - 肖汉骏《例谈信息学竞赛分析中的“深”与“广”》 | ||
倍增 | 2005 - 朱晨光:《浅析倍增思想在信息学竞赛中的应用》 | |
二分 | 2002 - 李睿:《二分法与统计问题》 | |
2002 - 许智磊:《二分,再二分!——从Mobiles(IOI2001)一题看多重二分》 | ||
2005 - 杨俊:《二分策略在信息学竞赛中的应用》 | ||
调整 | 2006 - 唐文斌:《“调整”思想在信息学中的应用》 | |
随机化 | 2007 - 刘家骅:《浅谈随机化在信息学竞赛中的应用》 | |
非完美算法 | 2005 - 胡伟栋:《浅析非完美算法在信息学竞赛中的应用》 | |
2008 - 任一恒《非完美算法初探》 | ||
提交答案题 | 2003 - 雷环中:《结果提交类问题》 | |
守恒思想 | 2004 - 何林:《信息学中守恒法的应用》 | |
极限法 | 2003 - 王知昆:《浅谈用极大化思想解决最大子矩形问题》 | |
贪心 | 2008 - 高逸涵《部分贪心思想在信息学竞赛中的应用》 | |
压缩法 | 2005 - 周源:《压去冗余缩得精华——浅谈信息学竞赛中的“压缩法”》 | |
逆向思维 | 2005 - 唐文斌:《正难则反——浅谈逆向思维在解题中的应用》 | |
穷举 | 2004 - 鬲融:《浅谈特殊穷举思想的应用》 | |
目标转换 | 2002 - 戴德承:《退一步海阔天空——“目标转化思想”的若干应用》 | |
2004 - 栗师:《转化目标在解题中的应用》 | ||
类比 | 2006 - 周戈林:《浅谈类比思想》 | |
分割与合并 | 2006 - 俞鑫:《棋盘中的棋盘——浅谈棋盘的分割思想》 | |
2007 - 杨沐:《浅析信息学中的“分”与“合”》 | ||
平衡思想 | 2008 - 郑暾《平衡规划——浅析一类平衡思想的应用》 |