poj
文章平均质量分 71
Weiguang_123
这个作者很懒,什么都没留下…
展开
-
poj 3411(dfs) 思路是别人的,代码自己写,为什么是3~9次
思路:http://blog.csdn.net/lyy289065406/article/details/6689310代码:#include#include#include#include#includeusing namespace std;const int INF=0xffffff;const int MAX=50;struct EDGE转载 2012-06-29 11:30:18 · 607 阅读 · 0 评论 -
poj 2396(有上下界的 可行流)
Amber大牛的《图论原理》:问题模型:给定一个加权的有向图,满足:(1)容量限制条件:(2)流量平衡条件:(2)中的即除了源汇外,所有点都满足流量平衡条件,则称G为有源汇网络;否则,即不存在源汇,所有点都满足流量平衡条件,则称G为无源汇网络。将这类问题由易到难一一解决:问题[1] 求无源汇的网络有上下界的可行流由于下界是一条弧上的流必需要满原创 2012-08-05 15:55:15 · 837 阅读 · 0 评论 -
poj 3498(满足点容量限制的网络流)
题意:某个冰块上有a只企鹅,总共可以跳出去b只,问是否可能所有的企鹅都跳到某一块冰块上,输出所有的可能的冰块的编号。由于每个点只能跳出去m只企鹅,所以要拆点假如不拆点,一个点到另一个点可能会跳多于m只企鹅通过拆点后u->u'间的容量来完成题目的要求(对点的一些限制)建图:i->i+n 容量为m i+n->j容量为INF新建源点s,s->i的容量为i点企鹅的个数然后枚举汇点求最大流就可以判断原创 2012-08-04 15:20:21 · 1627 阅读 · 0 评论 -
poj 3635 (最短路,广搜,邻接表,dp)
题意 : n个城市,每个城市的油价不同,m条连通这些城市之间的路,提供油桶的容量,要你求出由城市s出发到城市e的最小费用,其中刚开始时油桶为空,一单位的油可以走以单位的长度。 看到这题目觉得很难,这主要是不会建图和DP的思想. 事实上就是类似dijsktra算法的搜索,搜索最短路。 这个题目的图的点事实上有两个维.原创 2012-07-03 06:07:25 · 1564 阅读 · 0 评论 -
poj 2756(java的skip函数保证输入数字)
skip函数Source CodeProblem: 2756 User: 1013101127 Memory: 5628K Time: 594MS Language: Java Result: Accepted Source Code import java.io.*;import java.util.*;import java.math.*; p原创 2012-08-05 16:40:27 · 1092 阅读 · 0 评论 -
poj 1637(求混合图的欧拉回路是否存在:构造网络流求解)
思路是别人的,代码是自己的,自己的模版题。1 定义欧拉通路 (Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉回路 (Euler circuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉图——存在欧拉回路的图。2 无向图是否具有欧拉通路或回路的判定G有欧拉通路的充分必要条件为:G 连通,G中只有两个奇度顶点(它们分别是欧拉通路的两个端点原创 2012-07-23 15:53:45 · 5643 阅读 · 0 评论 -
poj 2987(最大权闭合图)最小割求解:关键是思路
同样看了别人的思路,自己写代码。转)题目描述:给你两个整数n和m。表示公司要开除n个员工,员工之间的关系有m个。然后给你n个数字,可正可负。表示开除这个员工所得到(正)或损失(负)的利益。m 个关系 a b表示b员工是a员工的下属。条件:如果开除一个员工,那么必须要开除他的下属,具有传递性(即也要开除下属的下属)。问你公司原创 2012-07-24 01:23:12 · 1677 阅读 · 0 评论 -
多校第一场:hdu 4308(bfs)
最短路。给出的地图中,Y为起点,C为终点,#点不能通过,可直接忽略。所有的P为互通的传送门,故可将所以的P看作同一个点。每个能通过的点可以向上下左右四个方向走,如果对应的方向可以通过,则连边,若要走到的点是*,则边权为通过的费用,否则边权为0。连边后求Y到C的最短路即可。#include #include #include #include using namespace std;原创 2012-07-20 14:57:16 · 701 阅读 · 0 评论 -
poj 2185(流的最小费用的充要条件)消负圈
【题意】:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可以避难,城市里面建了m座避难所。每座避难所只能容纳有限人数。给出每个建筑物和避难所的坐标(题目要求距离为曼哈顿距离+1)。现在给你一种避难方案,问这种方案是否为最优方案,如果不是,请输出一种比当前更优的方案(不一定最优)。【题解】:好明显的费用流(距离看成费用),如果此题建费用流模型找最小费用流必定超时,而且原创 2012-08-08 20:03:34 · 1379 阅读 · 0 评论 -
POJ 1639(K度限制的生成树)
题目大意是:矮人虽小却喜欢乘坐巨大的轿车,轿车大到可以装下无论多少矮人。某天,N(N≤5000)个矮人打算到野外聚餐。为了集中到聚餐地点,矮人A要么开车到矮人B家中,留下自己的轿车在矮人B家,然后乘坐B的轿车同行;要么直接开车到聚餐地点,并将车停放在聚餐地。虽然矮人的家很大,可以停放无数量轿车,但是聚餐地点却最多只能停放K辆轿车。现在给你一张加权无向图,它描述了N个矮人的家和聚餐地点,要你求出转载 2012-08-09 10:23:22 · 1872 阅读 · 0 评论 -
poj (3155)最大密度子图(搞懂了思路,悲剧)
题意简述:一个公司有n个人,给出了一些有冲突的人的对数(u,v),所有为了公司更好的发展,公司的总裁决定裁人,那么总裁现在裁要裁掉冲突率最高的哪些(冲突率=人数/在这些人中存在的冲突数分析: 很明显的一个求最大密度子图的题目,求最大密度子图的方法有两种不同的模型可以求解,一种是采用了转换为最大权闭合图的模型来求解,而另一种则是通过补集转换的思想来求解,现在就最大权闭合图的模型来谈论以下:设ma转载 2012-07-26 00:23:40 · 2044 阅读 · 0 评论 -
poj 2159(最小费用最大流)
大致题意:给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致。man每移动一格需花费$1(即单位费用=单位距离),一间house只能入住一个man。现在要求所有的man都入住house,求最小费用。 解题思路:费用流问题。 构图: 把man作为一个顶点集合U,house作为另一个顶点集合V,把U中所有点到V中所有点连线,费用cost[u转载 2012-03-07 05:28:31 · 3081 阅读 · 0 评论 -
poj 3687 【拓扑排序】【Labeling Balls】
题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小。(先保证1号球最轻,其次2号……)分析:拓扑排序,注意根据题的要求,要先保证1号球最轻,如果我们由轻的向重的连边,那么在拓扑时我们面对多个入度为0的点,我们不知道该把最轻的分给谁才能以最快的速度找到1号(使1号入度为0),并把当前最轻的分给1号。所以我们要由重的向轻的连边。这样我们原创 2012-02-13 22:47:11 · 552 阅读 · 0 评论 -
poj 1321(DFS)
题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 像八皇后那题~~~注意恢复原来的状态就可以了。-------------------------DFS还需要练习------------------------------原创 2012-06-29 02:29:28 · 496 阅读 · 0 评论 -
poj 2449 A* +Dijkstra求第K短路(模板题)
所谓K短路,就是从s到t的第K短的路,第1短就是最短路。 如何求第K短呢?有一种简单的方法是广度优先搜索,记录t出队列的次数,当t第k次出队列时,就是第k短路了。但点数过大时,入队列的节点过多,时间和空间复杂度都较高。 A*是在搜索中常用的优化,一种启发式搜索。简单的说,它可以用公式表示为f(n) = g(n) + f(n),其中,f(n)是从s经由节点n到t的估价函数转载 2012-07-01 11:02:04 · 5516 阅读 · 1 评论 -
poj 2976(01分数规划搜索+二分答案)
题目大意就 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大 题目求的是 max(∑a[i] * x[i] / (b[i] * x[i])) 其中a,b都是一一对应的。 x[i]取0,1 并且 ∑x[i] = n - k; 转:那么可以转化一下。 令r = ∑a[i] * x[i] / (b[i] * x[i])原创 2012-07-02 17:25:48 · 4444 阅读 · 0 评论 -
poj 1815(最小割+枚举)
题意:有n个人,他们两两之间能够联系的要求是直接能够联系或者能同时联系到某一个人,现在给出A B两人,问最少删除多少个人后,A B无法联系,如果有多种方案,输出字典序最小的算法:枚举+最大流每个点拆点,之间连一条容量为1的弧,保证每个人最多被删掉一次新增源点s汇点t,s只与x相连,t只与y’相连,容量均为+oo如果i能与j联系,则在I’与J之间连一条容量为1的弧原创 2012-07-13 14:16:01 · 765 阅读 · 0 评论 -
poj 3621(参数搜索+二分+spfa负环求解)
【题目大意】 给出一个有向图,问求一个回路,使得回路上的点权之和/边权之和 最大。【解题思路】 转:此题是对01分数规划的应用,那么首先明白01分数规划的思想.01整数规划问题就是求解方程(a1*x1+a2*x2+..+an*xn)/(b1*x1+b2*x2+..+bn*xn)的最小值/最大值问题。其中xi = 0或1(i=1,2...n)对于此原创 2012-07-02 15:44:35 · 2214 阅读 · 3 评论 -
poj 1236(tarjam)强连通分量
题目大意:N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。具体算法:先用tarjam求出有向图所有的强连通分量,然后将所有的强连通分量缩成一个点(缩点原创 2012-04-26 21:45:30 · 1056 阅读 · 1 评论 -
poj 2391(最大流+二分+拆点)
wa的真心给跪了,,,,也是先Floyd,然后二分答案做最大流。。题意:有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点。思路:拆点建图,每个点的(in)和(out)间容量inf,源点向每个有牛的点(in)连边,容量为该点的牛数,每个有避雨点的点(out)向汇点连边,容量原创 2012-07-17 16:14:12 · 827 阅读 · 0 评论 -
poj 1469(二分匹配的模版题)
还是二分图匹配 与n相等输出YES 否则输出NO#include #include #include #include #include using namespace std;const int N=300;int map[N][N];int cx[N],cy[N];int mark[N];int nx,ny;int dfs(int u){ for(int原创 2012-07-18 19:44:08 · 609 阅读 · 0 评论 -
poj 1486(二分图匹配的必须边:枚举)
题目描述:给你n个幻灯片,每个幻灯片有个数字编号1---n,现在给每个幻灯片用A---Z进行编号,那么问有多少个幻灯片的数字和字母是唯一对应的分析:求二分匹配的必须边,即x集合中的某个点最多只能和y集合中的某个点唯一匹配,那么这条边就叫做二分匹配的必须边,那我们可以先求出最大匹配,然后枚举每条边,将其删除,之后将两个点中其中一个进行匹配,若匹配成功,则说明该边不是必须边,若不能进行匹配则输出这原创 2012-07-18 21:32:22 · 1147 阅读 · 0 评论 -
hdu 4337——poj 2438(哈密尔顿回路求解模板)
转:http://imlazy.ycool.com/post.2072698.html Dirac 定理:设一个无向图中有 N 个节点,若所有节点的度数都大于等于 N/2,则汉密尔顿回路一定存在。注意,“N/2” 中的除法不是整除,而是实数除法。如果 N 是偶数,当然没有歧义;如果 N 是奇数,则该条件中的 “N/2” 等价于 “⌈N/2⌉”。证明起来不难。首先可以证明图一定是连通的原创 2012-08-04 14:03:36 · 6108 阅读 · 1 评论 -
poj 1601(扩展欧几里德求不定方程的整数解)
欧几里德的原理:(转)http://www.cnblogs.com/void/archive/2011/04/18/2020357.html扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(p, q) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现:int exGcd(int a, i原创 2012-08-11 13:42:00 · 2438 阅读 · 0 评论 -
poj 2284(欧拉公式的推广:线段分平面成几个区域:n+m-r==2)
欧拉公式:如果G是一个阶为n,边数为m 且含有R个区域的联通平面图,则恒有等式:n-m+R==2;推广:具有k 个联通分支的平面图G,有: n-m+R==k+1其中n,m,r,分别为阶数,边数,和区域数。回到题目:给出一些点 ,首尾相连,求分成的区域数 #include#include#include#define inf 0xffffff#include#原创 2012-08-10 20:50:35 · 4738 阅读 · 0 评论 -
金华邀请赛B题poj 4046(spfa求最短路)
题目大意:给定一个无向图,边上有权值,顶点也有权值。有q次询问,每次询问两个顶点,求这两个顶点之间(的路加上这条路上的最大的顶点权值)的最小值。思路:枚举点,然后求该点到a,b的最小距离。spfa的期望复杂度是O(ke),k一般在2左右,然后,就可以在这道题目大显身手了,这题时限非常紧,一般都是几千毫秒过的,时限只给了5000MS。所以,裸的spfa和暴力询问还是会超时。关键方程:(sta原创 2012-08-15 11:50:10 · 2578 阅读 · 0 评论 -
最小树形图 模板(poj3164)
链接:http://hi.baidu.com/bin183/blog/item/45c37950ece4475f1138c273.html有固定根的最小树形图求法O(VE):首先消除自环,显然自环不在最小树形图中。然后判定是否存在最小树形图,以根为起点DFS一遍即可。之后进行以下步骤。设cost为最小树形图总权值。0.置cost=0。1.求最短弧集合Ao (一条弧就是一条有原创 2012-08-26 21:28:26 · 2011 阅读 · 0 评论 -
hdu(4009)最小树形图自己建立root
题意:有n个地方需要供水,每个地方都可以选择是自己挖井,还是从别的地方引水,根据方法不同和每个地方的坐标不同,花费也不同,现在给出每个地方的坐标,花费的计算方法,以及每个地方可以给哪些地方供水(即对方可以从这里引水),求给所有地方供水的最小花费。思路:建立一个源点,到每个点的距离为自己打井的费用,其他的按条件建边。根据poj3164改过来的。#include #include #i原创 2012-08-28 13:24:25 · 575 阅读 · 0 评论 -
hdu 4284(状态压缩)&& poj 3311 &&,,,
题目:给出一些城市,从1出发,旅游一圈回到1,由于花费可能不够,所以选择一些城市打工,打工之前需要花费d买一个证,工资为c。选中的城市必须去工作一次,而且只能工作一次,问能不能完成旅行。思路:先用floyd预处理,因为hdp[pos][statue]表示在statue的情况下到pos位置的能到达最多的钱。然后枚举 (1#include#include#include#in原创 2012-09-11 15:44:13 · 672 阅读 · 0 评论 -
树状数组总结
树状数组的基本知识已经被各种大牛和菜鸟讲到烂了,我就不多说了,下面给出基本操作的代码。假定原数组为a[1..n],树状数组b[1..n],考虑灵活性的需要,代码使用int *a传数组。 #define lowbit(x) ((x)&(-(x)))int sum(int *a,int x){int s=0;for(;x;x-=lowbit(x))s+=a[x];retur原创 2012-09-11 03:30:55 · 639 阅读 · 0 评论 -
poj 3694&&hdu 2460 (手写递归栈版的tarjan)
题意:求加入一条边后剩余的桥。题解:加入的边形成的环里的桥都不存在了。#pragma comment(linker, "/STACK:10240000000000,10240000000000")#include #include #include #include #include using namespace std;const int maxn=110009;con原创 2012-09-17 13:34:08 · 1339 阅读 · 3 评论 -
2-sat总结
2 – SAT2 – SAT 就是2判定性问题,是一种特殊的逻辑判定问题。例,n对东西,每对只能选一个(i0或i1),不能不选。即:A or _A = 1 , A xor _A = 1还存在一些约束关系(i0,j0),表示i0不能跟j0一起选。那需连边i0-> j1 如果选i0的话必须选j1j0-> i1如果选j0的话必须选i1表示了一种递推的关系:选哪个必选哪一个一般转载 2012-07-12 22:51:08 · 648 阅读 · 0 评论 -
poj 2723(2-sat+二分答案)
题意:m个门,每个门上有两把锁,打开一个就可以通过 2n个钥匙,每两个绑在一起,只能选用一个 ,选了一个,另一个就被废弃。 问最多可以通过几扇门? 2-sat问题关键在建图,2-sat对每个事物都有两个选项 ,选和不选. 可以这么建: 每把钥匙有两个状态(用或不用),把这作为2-sat的两个选项 然后是加条件,a、b绑在一原创 2012-07-12 22:27:07 · 1609 阅读 · 0 评论 -
poj 3207(2-sat判断)
扯蛋的题意:平面上有一个圆,圆的边上按顺时针放着0..n-1共n个点。现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接。给你的信息中,每个点最多只能连一条边。问是否可以连接这m条边,使这些边都不相交。 把边看成2-sat,因为每一条边只有两种状态,在圆内和园外两种可能,这样就满足了2-sat状态了。每两条ab和cd边可能相交情况为: (c<a &原创 2012-07-12 17:12:53 · 1194 阅读 · 0 评论 -
poj 3684(2-sat解输出)拓扑+染色
http://blog.csdn.net/sdj222555/article/details/7718821回头再看看,还不是很理解,染色转:这题的题意稍不留神就会看错,注意那个keep ...from 是啥意思所以新娘看不见本排的情况,只能看见对面,要求不能看见不正常关系的一对。并且夫妇不能同时坐在一边。很明显的模型了,由于新娘看的是对面的情况,所以就需要对新娘对面的人来分析转载 2012-07-12 13:22:53 · 799 阅读 · 0 评论 -
poj 3678(2-sat入门)
我的第一道2-cat题2-cat问题解答:http://wenku.baidu.com/view/31fd7200bed5b9f3f90f1ce2.htmlhttp://hi.baidu.com/godforbidyy/blog/item/40efcc33e3bfc409eac4af4f.html转:(2-cat解题技巧)1.构图(重点+难点)2.求图的极大强连通子图 (模板)原创 2012-07-11 02:19:52 · 921 阅读 · 1 评论 -
poj 3311(状态压缩DP的最短路径)
题意:给一个起点和终点相同的图,一个矩阵表示各个点之间的距离,求经过所有的点,回到原点的最下路径,点可以重复走。#include #include #include #include #define inf 100000000using namespace std;const int N=12;const int M=1e5;int dis[N][N];int dp[M][N原创 2012-08-26 10:17:44 · 1941 阅读 · 0 评论 -
poj 2337(欧拉回路的最小子字典序)
C++语言: poj 2337 并查集+欧拉通路+贪心思维+dfs#include #include #include #include #include #include #include using namespace std;#define mset(x) (memset(x,0,sizeof(x)))#define MAXN 26struct node{ i原创 2012-09-05 16:26:46 · 3367 阅读 · 0 评论 -
poj 2828(线段树:单点插入,区间查询)
排队买票,但是 中途 出现插队情况,比如 0 123,代表值为123的人 插入到 0 的位置,如果后面 出现 0 456,那么新的 0的位置就是 456,123就变成是 1的位置了观察发现,最后一个插入到该位置的人位置是固定的,那么我们可以从后面进行插入操作,pos val 代表val要插入到pos位置,那么就是说 pos 前面要留出 pos个位置,因为 是从 0 开始的。线段树 :r原创 2012-08-18 12:06:45 · 1238 阅读 · 0 评论 -
poj 2886(线段树+反素数)
#include #include #include #define lson L , m , rt << 1#define rson m + 1 , R , rt << 1 | 1using namespace std;const int maxn = 520000;struct Node{ int L,R; int sum;}tree[maxn*4];in原创 2012-08-18 15:39:01 · 1953 阅读 · 0 评论