自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

转载 STL容器之删除元素,迭代器失效

转自博客:http://blog.csdn.net/panpanloveruth/article/details/7018549一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关联容器

2016-08-31 22:33:36 1967

原创 POJ 1177 Picture 求多个矩形周长 -

题目地址:http://poj.org/problem?id=1177题目超级水。离散化后用个数组模拟一下就能过了而且不能忍的是比线段树的方法空间更小,时间更短....OMG940K 16MS #include#include#include#includeusing namespace std;const int maxn=5000+5;int y[maxn*2]

2016-08-30 18:22:39 389

原创 POJ 3667 Hotel 区间合并+线段树 *

题目地址:http://poj.org/problem?id=3667因为要求出1~n中有len长度的连续线段所以线段树中至少要保存L~R的最大连续长度MaxLen还要思考两个区间合并成一个区间时,MaxLen可能是左半边的MaxLen和右半边MaxLen取最长一个又或者是左半边的MaxLen加右半边的MaxLen(当空的区间在中间是连起来的)所以线段树要保存从L起向右的连续空

2016-08-30 15:52:50 388

原创 POJ 3067 Japan 树状数组 .

题目地址:http://poj.org/problem?id=3067要用long long类型保存答案,不然WA#include#include#include#include#includeusing namespace std;typedef pair Edge;typedef long long LL;const int maxn=1000+5;int lowbi

2016-08-29 14:40:30 380

原创 POJ 1389 Area of Simple Polygons .

题目地址:http://poj.org/problem?id=1389#include#include#include#includeusing namespace std;const int maxn=1000+5;int y[maxn],nNode;struct Node{ int L,R,mid; int Covered; int Len; Node *pLeft,

2016-08-28 13:59:53 356

原创 POJ 2352 Stars .

题目地址:http://poj.org/problem?id=2352#include#include#include#include#includeusing namespace std;const int maxn=32000+5;int lowbit[maxn],C[maxn];int level[maxn];int inline getlowbit(int i){

2016-08-27 16:25:58 416

原创 POJ 2182 Lost Cows树状数组 *

题目地址:http://poj.org/problem?id=2352a[i]表示i排第几每个位置i代表,1~i有几个比i小的数可以从倒着来放数字,最后一个数n就是a[n]+1,因为只要前面有a[n]个比他小的数就好了,那么就是从小到大第a[n]个数倒数第二个数也是这样,因为只要考虑在他前面的数所以基本算法就是在待选的数中选第a[i]个放在i的位置上,当然要从后往前放

2016-08-27 15:15:52 428

原创 POJ 2182 Lost Cows

题目地址:http://poj.org/problem?id=2182#include#include#includeusing namespace std;const int maxn=8000+5;int a[maxn],r[maxn];vector tmp;int main(){ int n; cin>>n; tmp.push_back(1); for(int i=

2016-08-24 18:29:08 205

原创 POJ 3160 Father Christmas flymouse 强连通+Spfa

题目地址:http://poj.org/problem?id=3160缩点然后找出一条权重最大的路路当然是越长越好,所以从每个入度为0的点出发,找一条权值最长的可以假设一个点,从该点出发可以到所有入读为0的,然后以该点为起点SPFA#include#include#include#include #include #include#includeusing names

2016-08-24 16:14:57 235

原创 POJ 3114 Countries in War 强连通+dijkstra .

题目地址:http://poj.org/problem?id=3114缩点再用dijkstra查找一下就好了#include#include#include#include #include #include#includeusing namespace std;const int maxn=500+10;const int INF=1000000000;typedef

2016-08-24 14:57:10 301

原创 POJ 2553 The Bottom of a Graph .

题目地址:http://poj.org/problem?id=2553一个点集中任意两个点若u能到v,那么v一定要能到u,也即是求强连通中出度为0的点代码如下:#include#include#include#include #include#includeusing namespace std;const int maxn=5000+10;bool vis[maxn]

2016-08-24 14:01:23 224

原创 POJ 2762 Going from u to v or from v to u? 弱连通分量 -

题目地址:http://poj.org/problem?id=2762弱连通分量就是图中任意两点(u,v) u可以到v或者v可以到u题目就是问该图是不是弱连通分量缩点后,形成的树一定是一条链,这样才能有一条通路那么就是缩点后只有n-1个出入度为1的点,1个入读为0,出度为0的点我是通过有n-1个出度入读来判断的AC代码:#include#inc

2016-08-23 21:14:09 329

原创 POJ 3180 The Cow Prom 求强连通分量 .

题目地址:http://poj.org/problem?id=3180求强连通分量的点数>=2的个数 #include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ans,index; vector df

2016-08-23 16:22:33 310

原创 POJ 3352 Road Construction 点双连通分支 -

题目地址:http://poj.org/problem?id=3352题意:给你一个图,要求你加入最少的边,使得最后得到的图为一个边双连通分支。所谓的边双连通分支,即不存在桥的连通分支。思路:可以求出所有的桥,把桥删掉。然后把所有的连通分支求出来,显然这些连通分支就是原图中的双连通分支。把它们缩成点,然后添上刚才删去的桥,就构成了一棵树。在树上添边使得树变成一个双连通分支即

2016-08-23 15:52:50 317

原创 UVA 796 Critical Links 求桥 .

题目地址:http://acm.hust.edu.cn/vjudge/problem/20839模板题,裸的算法注意:1)题中要求的桥 (u,v)  u要小于v2)图不一定连通,但图是无向的,且无重边AC代码:#include#include#include#include #include#include#includeusing namespace

2016-08-23 14:26:59 272

原创 POJ 1144 Network 求桥的模板题

题目地址:http://poj.org/problem?id=1144直接上模板就好了#include#include#include#include #include #include#includeusing namespace std;const int maxn=100+5;typedef pair Edge; int index=0,rootson; ve

2016-08-23 13:18:46 371

原创 求无向连通图边双连通分支

边双连通分支:不包含桥的极大连通子图算法思路:只需在求出所有的桥以后,把桥边删除,原图变成了多个连通块,则每个连通块就是一个边双连通分支。桥不属于任何一个边双连通分支,其余的边和每个顶点都属于且只属于一个边双连通分支。#include#include#include#include #include#includeusing namespace st

2016-08-22 16:21:38 551

原创 求无向图连通图点双连通分支

点双连通分支:不包含割点的极大连通子图算法思路:建立一个栈,存储当前双连通分支,在搜索图时,每找到一条树枝边或反向边(连到树中祖先的边),就把这条边加入栈中。如果遇到某树枝边(u,v) 满足dfn(u)一个割点,此时把边从栈顶一个个取出,直到遇到了边(u,v),取出的这些边与其关联的点,组成一个点双连通分支。注意:割点可以属于多个点双连通分支,其余点和每

2016-08-22 15:23:35 1646

原创 求桥和割点的Tarjan算法

low[u]定义为u或者u的子树中能够通过非父子边追溯到的最早的节点的DFS开始时间dfn[u]表示dfs下u的开始时间割点:无向连通图中,如果删除某点后,图变成不连通,则称该点为割点。桥:无向连通图中,如果删除某边后,图变成不连通,则称该边为桥。判断割点方法:(1) u为树根,且u有多于一个子树。(2) u不为树根,且存在(u,v)为树枝边(或称父子边

2016-08-22 14:47:09 2958 2

原创 Tarjan求强连通(缩点)

#include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ID[maxn]; //点的颜色编号 int index,ncolor; vector dfn(maxn),low(maxn),st;v

2016-08-21 16:48:38 229

原创 POJ 2186 Popular Cows Tarjan算法

题目地址:http://poj.org/problem?id=2186#include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ID[maxn]; //点的颜色编号 int index,ncolo

2016-08-21 16:47:44 289

原创 POJ 1236 Network of Schools 强连通分支 .

题目地址:http://poj.org/problem?id=1236题目意思:给定一个有向图,求:1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点解:1)缩点2) DAG上面有多少个入度为0的顶点就是1)的答案3)假定有 n 个入度为0的点,m个出度为0的点,max

2016-08-21 15:54:10 235

原创 #368 (Div. 2) C. Pythagorean Triples

题目地址:http://codeforces.com/contest/707/problem/C勾股数组:点击打开链接1)n2)a为奇数,b=2*n*n+2*n,c=b+1;3)a为偶数,b=n*n-1,c=n*n+1#include#include#include#include#includeusing namespace std;typedef long lo

2016-08-21 15:09:13 234

原创 #368 (Div. 2) B. Bakery

#include#include#include#include#includeusing namespace std;typedef pair pii;const int maxn=100000+5;const int INF=1111111111;struct Point{ int d,u; Point(int u=-1,int d=INF):d(d),u(u){}};

2016-08-21 14:39:30 279

原创 #368 (Div. 2) A.Brain's Photos

#include#include#include#include#includeusing namespace std;const int maxn=100+5;char read(){ char ch; do{ ch=getchar(); }while(ch==' '||ch=='\n'); return ch;}int main(){ int r,c; b

2016-08-21 14:15:23 217

原创 Korasaju

procedure Strongly_Connected_Components(G); begin 1.深度优先遍历G,算出每个结点u的结束时间f[u],起点如何选择无所谓。 2.深度优先遍历G的转置图GT,选择遍历的起点时,按照结点的结束时间从大到小进行。遍历的过程中,一边遍历,一边给结点做分类标记,每找到一个新的起点,分类标记值就加1。3. 第2步中产生的标记值相同的结点构成深度优先森

2016-08-21 14:12:43 407

原创 POJ 2186 Popular Cows Korasaju .

题目地址:http://poj.org/problem?id=2186结论:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)所以就找找出度为0的点有几个就好了#include#include#include#include#includeusing namespace std;const int m

2016-08-21 14:07:47 299

原创 有下限的网络流

思路转自博客:http://blog.csdn.net/water_glass/article/details/6823741上下流相关的网络流的各种问题在Amber大牛的《图论原理》里讲的特备清楚。。。。。资料需要网上下载。。我就把原文摘抄下来吧。。。。。。问题模型:给定一个加权的有向图,满足:(1)容量限制条件:           

2016-08-19 18:57:35 1577

原创 POJ 2396 Budget 带下限的网络流 *

题目地址:http://poj.org/problem?id=2396真的是一个下午全在弄这道题,woc!一看AC了真TM激动,hhh思路:这道题可以转化成容量有下界的最大流问题,将方阵的行从1……n编号,列n+1……n+m编号,添加源点s=0和汇点t=n+m+1.1>将源点和每一个行节点相连,相连所形成的边的容量和下界置为该行所有数字的和2>将每一个列节点和汇点相连,

2016-08-19 18:52:57 390

原创 最小费用网络流

思路:反复用spfa算法做源到汇的最短路进行增广,边权值为边上单位费用。反向边上的单位费用是负的。直到无法增广,即为找到最小费用最大流。成立原因:每次增广时,每增加1个流量,所增加的费用都是最小的。因为有负权边(取消流的时候产生的),所以不能用迪杰斯特拉算法求最短路。因为增广的时候要知道上个节点,这不难,但还要快速的知道其反向边是哪个,这个就比较麻烦而如果用

2016-08-19 17:37:41 569

原创 POJ 2135 Farm Tour 最小费用最大流 -

题目地址:http://poj.org/problem?id=2135由于去和回来可以看成:2条从1到n的不同的路。所以转化成求从1到n的两条不同的路。建立一个源点,连接1号景点,无费用,容量为2(表示可以有两条路)同理,建立一个汇点,连接n号景点,无费用,容量为2.这样,如果求的的最大流是2,就表示了有两条从1到n的不同的路。(因为中间的点边容量只是1,只能用一次)这样求

2016-08-19 17:25:32 314

原创 POJ 2112 Optimal Milking Dinic+二分查找 -

题目地址:http://poj.org/problem?id=2112一般一堆数中最大值的最小值用二分查找,就是先假设一个数,在求一下看看符不符合题意,如果符合就缩小范围建图方法如下:每个奶牛和挤奶器都是一个节点,添加一个源,连边到所有奶牛节点,这些边容量都是1。添加一个汇点,每个挤奶器都连边到它。这些边的容量都是M。再每次根据Dinic算法求出的最大流是不

2016-08-18 17:43:38 251

原创 POJ 3436 ACM Computer Factory EK .

题目地址:http://poj.org/problem?id=3436写了起码4hour+....假设两个超级汇点源点,到000,和111点因为p最大只有10,所以一个整数就能保存保存点比较麻烦,一开始想的是map 给每个点一个id,但是两个相同的点,比如说010,不能看成同一个点,因为机器都不同,等下路径都找不了了所以用in[],out[]保存出来的点和进去的点,当out[u

2016-08-18 15:52:18 265

原创 次小生成树 模板

次小生成树可由最小生成树换一条边得到次小生成树,关键是求MaxVal数组:MaxVal[u][v]保存uv点之间在mst中的边最长的边的长度1)先求一棵MST,利用Prim算法(只能Prim,因为Prim是一个一个收录点的),且在求的时候求出MaxVal数组,更新MaxVal方法如下:prim算法中,已经加入生成树的点集合为W• 往W新增点s时,设 u 属于W,且 s是被连

2016-08-18 13:09:16 239

原创 HDOJ 4801 Qin Shi Huang's National Road System 次小生成树

题目地址:http://acm.hust.edu.cn/vjudge/problem/24956次小生成树,关键是求MaxVal数组:MaxVal[u][v]保存uv点之间在mst中的边最长的边的长度1)先求一棵MST,利用Prim算法,且在求的时候求出MaxVal数组,更新MaxVal方法如下:prim算法中,已经加入生成树的点集合为W• 往W新增点s时,设 u 属于W,且

2016-08-18 12:50:56 257

原创 POJ 1125 Stockbroker Grapevine Floyd .

题目地址:http://poj.org/problem?id=1125找出能让所有人知道消息的且最快的那个人,还要记录那个人传播中耗时间最长的另一人#include#include#include#include#includeusing namespace std;const int INF=1000000000;const int maxn=100+5;int di

2016-08-17 13:47:11 214

原创 POJ 3660 Cow Contest (Ployd) -

题目地址:http://poj.org/problem?id=3660如果一个点u, 有x个点能到达此点,从u点出发能到达y个点,若x+y=N-1,则u点的排名是确定的。用floyd算出每两个点之间的距离,最后统计,若dist[a][b] 无穷大且dist[b][a]无穷大,则a和b的排名都不能确定。最后用点个数减去不能确定点的个数即可。#include#include#inclu

2016-08-17 13:33:40 225

原创 Floyd 模板

求每一对顶点之间的最短路径。有向图,无向图均可,也可以有负权边,但不能存在负环u~v的最短路径 可以通过 dist[u][k1]+dist[k1][k2]+.....+dist[kn-2][kn-1]+dist[kn-1][v]来确定(k最多为n-1个,且这样计算的前提是存在边)#include#include#include#include#includeusing names

2016-08-16 19:28:04 215

原创 POJ 3256 Cow Picnic SPFA

题目地址:http://poj.org/problem?id=3256 题目求的是,所有奶牛都可以到的草坪有几块那只要利用SPFA,枚举所有草坪,求出所有奶牛草坪能否到达该草坪就好了因为要求的是其他草坪能否到达该草坪,所以把边都反向就好了#include#include#include#include#includeusing namespace std;const i

2016-08-16 19:06:17 302

原创 POJ 2387 Til the Cows Come Home (Spfa) .

题目地址:http://poj.org/problem?id=2387考虑双向边,还有重边,裸的算法#include#include#include#include#includeusing namespace std;const int INF=(1<<30);const int maxn=1000+5;struct Edge{ int to; int weight;

2016-08-16 18:26:18 259

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除