自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 poj (3155)最大密度子图(搞懂了思路,悲剧)

题意简述:一个公司有n个人,给出了一些有冲突的人的对数(u,v),所有为了公司更好的发展,公司的总裁决定裁人,那么总裁现在裁要裁掉冲突率最高的哪些(冲突率=人数/在这些人中存在的冲突数分析: 很明显的一个求最大密度子图的题目,求最大密度子图的方法有两种不同的模型可以求解,一种是采用了转换为最大权闭合图的模型来求解,而另一种则是通过补集转换的思想来求解,现在就最大权闭合图的模型来谈论以下:设ma

2012-07-26 00:23:40 2044

原创 poj 2987(最大权闭合图)最小割求解:关键是思路

同样看了别人的思路,自己写代码。转)题目描述:给你两个整数n和m。表示公司要开除n个员工,员工之间的关系有m个。然后给你n个数字,可正可负。表示开除这个员工所得到(正)或损失(负)的利益。m 个关系 a b表示b员工是a员工的下属。条件:如果开除一个员工,那么必须要开除他的下属,具有传递性(即也要开除下属的下属)。问你公司

2012-07-24 01:23:12 1677

原创 多校第一场:hdu(4301)dp

题意:把2*n的方格,分成m个部分有多少中分法。    在孟神的帮助下看懂了第一道dp,,,,转自解题报告:      状态表示 f[i][0][j]:前i行已经出现了j部分且第i行的两个格子属于同一部分的方法数         f[i][1][j]:前i行已经出现了j部分且第i行的两个格子属于不同部分的方法数        初始条件 f[1][0][1]=f[

2012-07-24 00:55:35 917

原创 poj 1637(求混合图的欧拉回路是否存在:构造网络流求解)

思路是别人的,代码是自己的,自己的模版题。1 定义欧拉通路 (Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉回路 (Euler circuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉图——存在欧拉回路的图。2 无向图是否具有欧拉通路或回路的判定G有欧拉通路的充分必要条件为:G 连通,G中只有两个奇度顶点(它们分别是欧拉通路的两个端点

2012-07-23 15:53:45 5643

原创 多小第一场:hdu:4305(矩阵求生成树的个数+乘法逆元)

题目模型:给定平面上N个点。如果两点距离小于等于R,且两点间线段上没有其他点的时候,两点可以建立一条边。得到这个图后,求此图的生成树个数 mod 10007,如果图不连通则输出-1.      第一部分:构图。枚举两点是否符合距离限制,如果符合则对比此两点方向向量上是否有距离更小的其他点,然后根据情况建边删边。(O(N*N*log(N)))      第二部分:如果图连通,则根据生成树定理

2012-07-23 14:18:36 3191

原创 多校第一场:hdu(4302)(树状数组+二分)

树状数组,1时候,二分左边第一个不是0的位置,和二分右边第一个不是0的位置.#include#include#include#include#include#include#include#include#include #includeusing namespace std;const int inf=1<<30;const int M=100030;int nu

2012-07-22 00:00:18 836

原创 多校第一场:hdu4309(最大流+枚举)

题意: n个点,每个点有初始的值 ,三种 通道,1、隧道:可以用来躲避,有固定的容量,也可以用来传递。2、普通的道路,可以无限的通过。3、桥:不花费的话能通过一人,修之后可以无限通过。问最少花费最大可以隐藏人数。 可以建立最大流模型来求解,增加一个源点S,和一个汇点T。S向每个有人的点,连一条容量为人数的边,图中普通的u->v的有向边,连一条u->v的流量为无穷的边,桥的流量则为1。

2012-07-21 15:02:54 784

原创 多校第一场:hdu 4308(bfs)

最短路。给出的地图中,Y为起点,C为终点,#点不能通过,可直接忽略。所有的P为互通的传送门,故可将所以的P看作同一个点。每个能通过的点可以向上下左右四个方向走,如果对应的方向可以通过,则连边,若要走到的点是*,则边权为通过的费用,否则边权为0。连边后求Y到C的最短路即可。#include #include #include #include using namespace std;

2012-07-20 14:57:16 701

原创 poj 1486(二分图匹配的必须边:枚举)

题目描述:给你n个幻灯片,每个幻灯片有个数字编号1---n,现在给每个幻灯片用A---Z进行编号,那么问有多少个幻灯片的数字和字母是唯一对应的分析:求二分匹配的必须边,即x集合中的某个点最多只能和y集合中的某个点唯一匹配,那么这条边就叫做二分匹配的必须边,那我们可以先求出最大匹配,然后枚举每条边,将其删除,之后将两个点中其中一个进行匹配,若匹配成功,则说明该边不是必须边,若不能进行匹配则输出这

2012-07-18 21:32:22 1147

原创 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

原创 poj 2391(最大流+二分+拆点)

wa的真心给跪了,,,,也是先Floyd,然后二分答案做最大流。。题意:有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点。思路:拆点建图,每个点的(in)和(out)间容量inf,源点向每个有牛的点(in)连边,容量为该点的牛数,每个有避雨点的点(out)向汇点连边,容量

2012-07-17 16:14:12 827

原创 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

转载 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

原创 poj 2723(2-sat+二分答案)

题意:m个门,每个门上有两把锁,打开一个就可以通过 2n个钥匙,每两个绑在一起,只能选用一个 ,选了一个,另一个就被废弃。 问最多可以通过几扇门? 2-sat问题关键在建图,2-sat对每个事物都有两个选项 ,选和不选. 可以这么建: 每把钥匙有两个状态(用或不用),把这作为2-sat的两个选项 然后是加条件,a、b绑在一

2012-07-12 22:27:07 1609

原创 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

转载 poj 3684(2-sat解输出)拓扑+染色

http://blog.csdn.net/sdj222555/article/details/7718821回头再看看,还不是很理解,染色转:这题的题意稍不留神就会看错,注意那个keep ...from 是啥意思所以新娘看不见本排的情况,只能看见对面,要求不能看见不正常关系的一对。并且夫妇不能同时坐在一边。很明显的模型了,由于新娘看的是对面的情况,所以就需要对新娘对面的人来分析

2012-07-12 13:22:53 799

原创 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 3592(强连连通分量+缩点+重建图形+spfa求最长路)

感觉这道题很水,虽然过的人不多,觉得很恶心,思路还是懂得,但写的时候很麻烦,主要是代码的功底不好,,,,这题可以练代码量。自己写了你才懂得的,搞了半天,,,, 回正题:给出一个n*m的矩阵,每个格子可能放有0~9,#,*。0~9代表金矿的数量,#代表阻碍,不能够走,*代表传送点,可以瞬间传送到特定的位置,对于传送点的传送功能可以无限使用,也可以不用。初始时你开着一辆坦克在最左上角,

2012-07-10 16:19:54 1806

原创 poj 3249(DP+拓扑排序)

给定一个有向无环图(DAG),n个点,m条边(1<=n<=100000, 0<=m<=1000000),有若干个入度为0的点,若干个出度为0的点,每个点有一个权值value,要求选择一条从某个入度为0的点到某个出度为0的点的路径,使得整个路径上点的权值之和最大; dp[j]=max(dp[j],dp[i]+b[j]).如果in[i]==0,dp[i]=va[i];否则为 负无穷小。为

2012-07-10 02:48:06 980

原创 poj 1659 (havel定理)

haval定理:(转) Havel算法的思想简单的说如下:(1)对序列从大到小进行排序。(2)设最大的度数为 t ,把最大的度数置0,然后把最大度数后(不包括自己)的 t 个度数分别减1(意思就是把度数最大的点与后几个点进行连接)(3)如果序列中出现了负数,证明无法构成。如果序列全部变为0,证明能构成,跳出循环。前两点不出现,就跳回第一步!自己的代码:#include #incl

2012-07-10 01:07:27 1074

原创 poj 2762(弱联通:强连通+缩点+拓扑排序)

题意:给出n个点和m条边,接着给出直接相连的边(注意是有向边),求解任意x,y两点间是否存在x可到达y或者y可 到达x,如果任意x和y都满足这样的条件就输出"Yes",否则输出"No". 先求解出该有向图的强连通分量,然后根据求解出来的强连通分量进行缩点重新建图, 那么问题就转换为求解在新图中是否存在一条能走完所有的顶点的路径,这时可以对缩点后的新图进行拓扑排序, 看拓扑排序是否可以

2012-07-10 00:01:13 2320 1

原创 poj 3522(求最小生成树,使得最边和最小边差最小)

枚举最小边,用kruskal求生成树,不断更新最小值就可以了。 给定一个简单图,n个点,m条边( 1<=n<=100,0 ≤ m ≤ n(n − 1)/2 ),要求一颗生成树,使得其最大边与最小边的差值是所有生成树中最小的,输出最小的那个差值。分析:  类似于kruskal算法求最小生成树,将所有边按权值大小排升序,e1,e2,e3,...em。  枚举每条边ei,对ei,ei+1,ei+

2012-07-08 17:17:21 1730

原创 poj 4047金华邀请赛 D题 (线段树+lazy优化)

/*题意:给出一个N个数的序列以及一个k(0<k<=n<=200000),m个操作p,x,y,其中p=0:将x位置的数替换为yp=1:将x y位置的数互换p=2: 查询x-y位置区间连续k个数的和的最大值分析:因为要求连续区间的最大,我们可以把区间和当做一个节点,这样区间就代表一个点,点就代表一个区间了,这样就可以把原来1~n个数重新分为1~n-k+1了,所以我们只要建一颗总节点范围为

2012-07-08 07:09:49 2045

原创 poj 4048 计算几何(线段相交)金华邀请赛 E题

题意说是有个人在一个点o上,然后他拿了一个巨强的诸葛连弩,可以射穿任何东西,现在给你许多城墙(就是线段了),问你他朝那个方向射击会射穿最多的城墙,只要接触城墙就算是射穿了。分析:计算几何,思路就是离散加枚举。枚举每点到o的射线,我们可在射线的无穷远处选一个点tp和o组成一个线段l。然后记录有多少条线段于l相交,取最大值。#include #include #include #defin

2012-07-07 21:10:58 1410

原创 金华邀请赛 B题 poj 4045

昨晚没能把这题A掉,很懊悔,且不管什么树形DP,只要dfs水平过硬,这题也就变成水的了。大神们都说是比较简单但是却是比较经典的树形dp,还有用两次DFS扫描全树就行。赛后请教了孟神,才明白就是这么个样。重新打了代码,T了两次,就A了。 题意:n个点之间有n-1条边相连,形成一棵树,在这n个点上选一个点建一个发电站,要求该发电站到所有点的代价总和最小,每一个点到发电站的代价为I*I*R

2012-07-07 21:06:58 1844

原创 poj2728 (01参数规划,最优化率生成树,二分)

这题01参数规划,其实就是二分,最优率生成树,但是精度卡的太死了,,要么WA,要么TLE。 二分 重新构图 : graph[i][j]=fabs(dot[i].h-dot[j].h)-mid*dis(dot[i].x,dot[i].y,dot[j].x,dot[j].y);#include#include#include#include#include using na

2012-07-06 15:48:57 1471

转载 poj 3728(LCA+并查集+DP)

思路理解,但是代码实现不行,其中是并查集更新他复杂了,,,另外,可以用RMQ来搞。代码是修改别人的代码的。 转: 题意:给出一棵节点有值的树,给出Q个询问(a,b),问从a到b的最大盈利(即:先在最小值买入,再在最大值卖出) 分析:这题其实就是在一棵树上找RMQ,于是很多人都转化为rmq问题来做,尽管都说非常好做,但是由于本菜对RMQ

2012-07-06 10:38:20 2174

原创 poj (简单题:kruskal判断最小生成树是否唯一--求次小生成树 )

#include#include#include#include#include#include#include#includeusing namespace std;const int inf=999999;const int maxn=10000;int n,m;struct EDGE{ int u,v,len; int vis;}edge[maxn

2012-07-05 17:42:54 1800

原创 poj 1966(求图(有向和无向图)的--边连通度和顶点连通度---转为最小割)

题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通。解题报告:概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通,  而去掉 K 个顶点后的图不连通则称 G 是连通的, K 称作图 G 的点连通度,记作 K(G) 试设计(2)相应地如果至少去掉 K 条边使这个图不连通,则 K 成为图的边连通度 边连

2012-07-05 15:54:21 2684

原创 poj 2194(字符串的DP)

题意:从a、b串组合出c串,如果可以,输出“yes”,否则输出“no”组合规则:不能乱序,只能顺序从a.b串中去字符。DP 挺神奇的,一直想学DP ,但是怎么也想不出,真佩服能DP 的神牛们阿,,,,思维太强了。DP[i]j]表示a的前i个和b的前j个字符组成的c的前i+j个元素,则DP[i][j]=DP[i-1][j]&&DP[i][j-1];所以a[0~i-1]必须和C[i+j-1]中

2012-07-05 11:16:55 1059 1

原创 poj 2584(多重匹配用--dinic模板题)

题意:现在要将5种型号的衣服分发给xn个参赛者,然后给出每个参赛者所需要的衣服的尺码的大小范围,在该尺码范围内的衣服该选手可以接受,再给出这5种型号衣服各自的数量,问是否存在一种分配方案使得每个选手都能够拿到自己尺码范围内的衣服. 可以通过建立超级原点和汇点来求。 真恶心,题目的输入形式不注意,还有初始化没注意,TLE 了几次。。。。#include#include#in

2012-07-05 10:15:35 970

原创 poj 3281(dinic+拆点)

题意:有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料。现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。(1 <= f <= 100, 1 <= d <= 100, 1 <= n <= 100)思路:最大流。重点在于建图!最大流的正确性依赖于它的每一条s-t流都与一种实际方案一一对应。故此题需要用

2012-07-05 06:09:42 822

转载 tarjan算法的心得

http://blog.csdn.net/sevenster/article/details/6882225Tarjan大神DFS的三个算法终于都学会了。1.Tarjan求最近公共祖先。2.Tarjan求强连通分量。3.Tarjan求双连通分支。这篇文章介绍第三项:Tarjan求双连通分支;基本概念:1.割点。在无向图中存在这样一个点,切除该点图的连通分量数+1.也就是说原有的一个

2012-07-05 00:31:07 717

原创 poj 3417(tarjan 求边被环覆盖了几次)老TLE了-------还没AC

题意:给出一棵树,再给出M条新边,问删除一条树边以及一条新边,使之至少变为两部分的方案数 对于新边(a,b),会在a->LCA(a,b)->b这里形成一个环,所以删除新边(a,b)以及这个环上的没有被其他环覆盖的边 即可分成两部分。所以问题转化为求每条边被环覆盖的次数。   ans=边数为没被环遍历的个数*m+植被一个环遍历的个数。   听说是treeDP ,不会,回头

2012-07-04 23:56:29 1171

原创 poj 2553 (tarjan求强连通分量+缩点)

题目大意:  给定一个n个点的有向图( 1<=n<=5000 ),要求你输出所有满足条件的点,条件是点在 出度为0的强连通分量里,点要按标号大小升序输出。tarjan太强大了,,Source CodeProblem: 2553 User: 1013101127Memory: 808K Time: 266MSLanguage: C++ Result: AcceptedSource

2012-07-04 16:44:26 1353

原创 poj 2117(tarjan 求无向图去掉一点的连通分量)

题意:在一片森林中求去掉一节点之后形成最多的连通分量的个数。注意是森林就可以了。 #include#include#include#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))using namespace std;const int nMax=10005;const int

2012-07-04 14:00:59 841

原创 poj 1986(tarjan求树中两个节点的距离)

给出一棵树询问 a-b的路径长度是多少给出一棵树询问 a-b的路径长度是多少dist【i】记录节点i到根的距离长度对于每次询问,用RMQ预处理的LCA可以在线回答每个询问, ans=dist[a]+dist[b]-2*dist[LCA(a,b)]; Source CodeProblem: 1986 User: 1013101127Memory: 18576K Tim

2012-07-04 13:48:01 1144

原创 poj 3635 (最短路,广搜,邻接表,dp)

题意 : n个城市,每个城市的油价不同,m条连通这些城市之间的路,提供油桶的容量,要你求出由城市s出发到城市e的最小费用,其中刚开始时油桶为空,一单位的油可以走以单位的长度。 看到这题目觉得很难,这主要是不会建图和DP的思想. 事实上就是类似dijsktra算法的搜索,搜索最短路。 这个题目的图的点事实上有两个维.

2012-07-03 06:07:25 1565

原创 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

原创 poj 3463 (次短路的模版)

求最短路数量和和次短路与最短路长度大于1的途径数量。 原来想用第K短路把所有的前面最短的和次短(K=1,2,3,,,,)最后TLE了,不知道A*的复杂度是多少,然后的得用次短路求解,用dp[][2]数组存顶点遍历的次数,Source CodeProblem: 3463 User: 1013101127Memory: 852K Time: 516MSLanguage:

2012-07-02 15:48:56 969

空空如也

空空如也

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

TA关注的人

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