- 博客(15)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 网络流初步之最大流(增广路算法)
网络流是一个联通图; 网络流有如下三个性质: 1.一条边上容量恒大于流量。 2.斜对称性,f(u,v)=-f(v,u); 3.对于非源点和汇点有sigema(i,j){i,j属于E}=0; 为了更方便算法的实现,一般根据原网络定义一个残量网络。其中r(u,v)为残量网络的容量。 r(u,v) = c(u,v) – f(u,v) *反向边也有r!!!! 增广路是指一条源点到汇点的
2017-02-10 22:51:37 691
原创 Dark的项链(树链剖分)
P2272 - Dark的锁链 Description 无向图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark有N – 1条主要边,并且Dark的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark还有M条附加边。 你的任务是把Dark斩为不连通的两部分。一开始Dark的附加边都处于无敌状态,你只能选择一条主要边切断。一旦你切断了一条主要
2017-02-10 14:11:47 308
原创 树链剖分
定义: siz[]数组,用来保存以x为根的子树节点个数 top[]数组,用来保存当前节点的所在链的顶端节点 hson[]数组,用来保存重儿子 drep[]数组,用来保存当前节点的深度 fa[]数组,用来保存当前节点的父亲 id[]数组,用来保存树中每个节点剖分后的新编号 两遍dfs求出以上信息,连边成重链,按照新的编号建树(有的题目这一步可省略);剩下全是线段树的操作 查询或修改
2017-02-10 08:38:05 271
原创 树型DP
树型DP不同于普通的的DP之处在于:通过递归找出儿子的信息,在回溯的过程中DP,计算结果(似乎很像记忆化搜索。。。。。。)然后处理相关信息,回答询问》》》》》》》经典应用:点分治中求重心,树链剖分中求重儿子,等等。。。。。。。。。
2017-02-08 21:15:19 308
原创 点分治。。。。。
点分治,就是在树上分治,讲得很高大上。。。。。。。。 实际上就是findroot,answer两个操作; 根据分治的处理方法:分成若干个子问题 因此,在每次dfs都要查找root;据说这样就是优化。。。。
2017-02-07 11:53:47 223
原创 巧克力
在某年某月某日,小D莫名其妙的得到一块超级大的魔法巧克力,于是他决定将这块巧克力切成若干块送给幼儿园的其他小朋友。这是一块n*m的矩形巧克力,所以小D准备将它切成n*m块。 由于这块巧克力是一块魔法巧克力,所以必须按照特殊的方法进行切割。巧克力上共有n-1条横线和m-1条竖线,每次小D可以沿着其中的一条线切开某一块。而且这样切一次的代价只跟所切的线有关,而与所切的长度无关。沿着每条横线切一次的代
2017-02-06 16:08:40 1088
原创 离散化初步
离散化初步: 离散化对于处理数据值较大,数组无法存储,而值又与所求结果关系不大时有妙用 这里利用系统标准模板库STL实现,考场上建议用STL,手写会很麻烦的。。。。。。。。。 1.sort(a,a+n)排序。。。。这个不用说 2.unique(a,a+n)去重,返回最后那个完成去重的点的位置,好像是地址,所以减一个a; 3.lower-boud(a,a+n,x)返回a[0]-a[n-
2017-02-04 22:21:20 521
原创 NOI全国赛(1998)——围巾裁剪
裁缝有一块非常珍贵的丝绸围巾。可惜的是,围巾的某些部分已经被蛀虫给咬坏了。裁缝当然不愿意就这么把围巾给丢了,于是,他想把围巾给裁成两块小围巾送给他的两个女儿。自然,两块小围巾的面积之和越大越好。 这块围巾是一个正三角形,三条边被均匀地分成了N段,即这个正三角形被均匀地分成了N2个单元,每个单元是一个面积为1的正三角形。图一所 示为一个N=5的围巾,图中带阴影的单元表示被蛀虫咬坏的部分。从上往下
2017-02-03 21:55:01 734
原创 关于Tarjan(3)——离线LCA
LCA(最近公共祖先),指对于一棵树上任意两个节点往上走最早都能到达的节点。 求LCA有两种方法,一种是倍增,另一种则是Tarjan。。。。。。。。 Tarjan巧妙利用并查集的思想; 这里的Tarjan是离线算法 先Tarjan下去; 首先有fa[NUM]=num; 回溯时将子节点的fa变为num 如果对于num的询问中另一个点已经访问; 那他们的LCA为另一个点的find(f
2017-02-02 20:11:37 228 3
原创 丑数(USACO)
这个题是一个动态规划加优化的经典题 1246 丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..
2017-01-29 23:37:24 1110 2
原创 NOI全国赛(2001)--食物链
今天写了道并查集的题,看来并查集的题刷少了,,,,,用法好神奇啊!!!开三倍并查集 用i表示自己,i+n存天敌,i+2*n存可以克制de,再逻辑判断一下即可。 所以,要意识到并查集的分类处理可以开不同倍数的空间来适应题目要求。 1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB
2017-01-25 16:28:03 308
原创 HNOI(湖南省选试题)——永无乡
今天写了一道十分巧妙的数据结构题———永无乡 (看的题解。。。。。。) 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操
2017-01-23 22:13:03 318
原创 关于Tarjan(2)
Tarjan有第二个神奇的用法,求强连通分量!!!!!!!!!!!!!!!!!!! 同样利用了dfn:dfs序,low:能回到的最早祖先的dfn; 废话少说 上板子 #include #include #include #include #include #include #include #include//栈的stl需要头文件 #include using namespace std;
2017-01-23 10:26:14 174
原创 关于Tarjan(1)
众所周知, Tarjan这个人特别调子,在图论等方面有重大成效,如离线求LCA,强连通分量,割点等。 这里只对求割点进行代码剖析。 所以 上板子 void tarjan(int now){//now当前节点 int num1=0;//dfn为时间戳,low为时间戳最小的祖先 dfn[now]=low[now]=++num; vis[now]=true; for(int i=
2017-01-22 19:06:10 288
原创 关于Trie KMP AC自动机
个人认为trie,KMP,AC自动机是思想非常明确的,AC自动机的性质是与KMP的思想类似的(失配后跳转) 而KMP是线性的,AC自动机是在tire树上跑KMP,为方便那些不会用指针的小朋友(我也不会。。。。) 我的tire树,kmp的next,AC自动机的fail全是用数组实现的!!!!(还有谁???!!!) 所以 上板子 1,KMP void make() {//建立next数组
2017-01-20 09:20:33 453 2
TA创建的收藏夹 TA关注的收藏夹
TA关注的人