- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 poj 3164 最小树形图模板!!!
/*tle十几次,最后发现当i从1开始时,给环赋值时要注意啊!最小树形图 */#include#include#include#define N 110#define inf 0x3fffffff#define eps 1e-10struct node {int u,v;double w;}edge[N*N*2];double distance (double x,do
2014-08-27 16:52:17 763
原创 hdu 4940 无源汇有上下界最大流
题意:给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该边)问是否存在一个集合S,和一个集合的补集T,破坏所有S集合到T集合的边代价和是X,然后修复T到S的边为无向边代价和是Y,满足Y分析:无源汇有上下界可行流判定, 原来每条边转化成 下界为D 上界为 D+B ,判断是否存在可行流即可。 如果存在可行流 那么说明对于任意的
2014-08-23 17:38:09 895
原创 hdu 4975 最大流解决行列和求矩阵问题,用到矩阵dp优化
//刚开始乱搞。//网络流求解,如果最大流=所有元素的和则有解;利用残留网络判断是否唯一,//方法有两种,第一种是深搜看看是否存在正边权的环,见上一篇4888//至少3个点构成的环,第二种是用矩阵dp,只需要满足某行的i列元素0,而另一行的i列元素>0,j列元素<9,//可以满足互补就证明不唯一,这个画图不难看出#include#include#includeusing names
2014-08-23 16:42:35 1307 2
原创 hdu 4971 多校10最大权闭合图
/*很明显的最大权闭合图题*/#include#include#includeusing namespace std;#define N 2100#define inf 0x3fffffffstruct node {int u,v,w,next;}bian[N*N*20];int head[N],yong,dis[N],work[N];void init(){yong=
2014-08-23 16:15:34 683
原创 hdu 4888 最大流给出行列和求矩阵
第一步,考虑如何求是否有解。使用网络流求解,每一行和每一列分别对应一个点,加上源点和汇点一共有N+M+2个点。有三类边: 1. 源点 -> 每一行对应的点,流量限制为该行的和2. 每一行对应的点 -> 每一列对应的点,流量限制为 K3. 每一列对应的点 -> 汇点,流量限制为该列的和 对上图做最大流,若源点出发的边和到达汇点的边全都满流,则有解,否则无解。若要求构造方案,则 (i,j
2014-08-21 20:03:18 1520
原创 poj 3621最优比例生成环(01分数规划问题)
/*和求最优生成树差不多转载思路:http://www.cnblogs.com/wally/p/3228171.html思路:之前做过最小比率生成树,也是属于0/1整数划分问题,这次碰到这道最优比率环,很是熟悉,可惜精度没控制好,要不就是wa,要不就是tle,郁闷啊!实在是懒得码字,直接copy吧:题目的意思是:求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权
2014-08-20 16:22:11 631
原创 poj 2728 最优比例生成树(01分数规划)模板
/*迭代法 :204Ms*/#include#include#include#define N 1100#define eps 1e-10#define inf 0x3fffffffstruct node { int u,v,w;}p[N];double ma[N][N];double distance(int i,int j) {return sqrt(1.0*(
2014-08-19 09:52:06 865
转载 最优比例生成树最优比率生成树 01分数规划问题
转载:http://blog.csdn.net/sdj222555/article/details/7490797网上有一些很数学的证明方法,表示看的挺晕,自己理解了一下后,发表下自己的看法,如果有错误,再进行修改其实原题就是求 MIN( ∑CiXi / ∑DiXi ) Xi∈{0,1} ,对每个生成树,设其比率r=∑CiXi / ∑DiXi ,可得∑CiXi - ∑DiXi * r=0(条件
2014-08-19 09:43:01 498
原创 poj 2553强连通+缩点
/*先吐槽下,刚开始没看懂题,以为只能是一个连通图0T0 题意:给你一个有向图,求G图中从v可达的所有点w,也都可以达到v,这样的v称为sink.求这样的v. 解;求强连通+缩点。求所有出度为0的点即为要求的点。 注意:可能有多个联通分支。*/#include#include#include#define N 5100struct node { int u,v,w,next;
2014-08-18 17:26:43 636
原创 poj 2831 次小生成树模板
/*次小生成树题意:给你一些路径,现在将一部分路径权值减少后问是否可以替代最小生成树里面的边。解:次小生成树,即将这条边连上,构成一个环求出任意两点路径之间的除了这条边的最大值,比较这个最大值>=这条边,说明可以替换。prime算法次小生成树模板*/#include#include#define N 1100#define inf 0x3fffffffint ma[N][N];
2014-08-18 15:38:49 1092
转载 prime算法邻接表写法
#include #include using namespace std;typedef struct { long v; long next; long cost;}Edge;typedef struct { long v; long cost;}node;bool operator <(co
2014-08-18 14:51:44 1615 1
原创 hdu 2349 最小生成树
/*刚开始想错了,我以为必须是相邻的点才能连接,原来无线距离可以任意连接*/#include#include#include#include#define N 600struct node { int u,v;}f[N];struct nodee{ int u,v; double w;}ff[N*N];double distance(int i,int j) {
2014-08-18 11:27:07 686
转载 次小生成树的学习
为什么写这个呢?因为那天听到了这个词,属于MST的扩展……最小K度树有空研究。一.理论准备 需要读者事先懂得prime算法,不太了解的请看博主这一篇http://www.cnblogs.com/hxsyl/p/3286956.html,也需要读者对DP了解一些。 先看一个结论:次小生成树可由最小生成树换一条边得到,笔者认为很有必要搞清楚这一点,,否则对算法理
2014-08-18 09:39:26 567
转载 最小生成树prime算法模板
#include#includeusing namespace std;int map[505][505];int v, e;int prime(){ bool vis[505]; int dist[505]; int i,j,sum=0; for(i=1;i<=v;i++) { vis[i]=0; //先假设编号为1的点加入MST d
2014-08-16 11:10:36 1565
原创 poj 1679 判断最小生成树是否唯一
/*只需判断等效边和必选边的个数和n-1的关系即可*/#include#include#define N 110struct node { int u,v,w;}f[N*N*2];int cmp(const void *a,const void*b) {return (*(struct node *)a).w-(*(struct node *)b).w;}int pre[
2014-08-14 20:31:51 704
原创 hdu 4950
#includeint main(){ __int64 h,a,b,k,j=0; while(scanf("%I64d%I64d%I64d%I64d",&h,&a,&b,&k),h||a||b||k) { printf("Case #%I64d: ",++j); if(h<a+1) { printf("YES\n");
2014-08-14 18:26:49 612
原创 sgu 176 有源汇有上下界的最小流模板题
/*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282 有上下界的有源最小流*/#include#include#includeusing namespace std;#define N 300#define inf 0x3fffffffstruct node {int u,v,w,f,
2014-08-13 11:32:55 917 2
原创 zoj 3229 有源汇有上下界的最大流模板题
/*坑啊,pe的程序在zoj上原来是wa。题目大意:一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能超过Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照;否则输出-1。解题思路:增设一源点st,汇点sd,st到第i天连一条上界为Di下界为0的边,每个女神到
2014-08-12 20:00:14 1021
原创 hdu 4941 stl的map<node,int>用法
#include#include#include#includeusing namespace std;typedef struct node{ int x,y; bool operator<(const node &b)const { if(x==b.x) return y<b.y; else
2014-08-12 17:29:26 985
原创 sgu 194 无源汇有上下界的最大流(最大流模板dinic加优化)
模板类型的题具体参考国家集训队论文:http://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html参考博客:http://blog.csdn.net/mypsq/article/details/38467727#include#include#includeusing namespace std;#define N 300#defi
2014-08-11 17:32:11 790
原创 hdu 2987最大权闭合图模板类型题
/*最大权闭合图模板类型的题,考验对知识概念的理解。题意:现在要辞退一部分员工,辞退每一个员工可以的到一部分利益(可以是负的),并且辞退员工,必须辞退他的下属,求最大利益和辞退的最小人数。最大权闭合图模板类型。求出最大权后沿着源点s,dfs到的点就为最小的人数。证明/*转载:利用一个经典的trick:多关键字> 建图前,对所有b[i],执行变换b[i]=b[i]*10000-1,然后
2014-08-10 15:24:03 867
原创 手动扩栈#pragma comment(linker, "/STACK:1024000000,1024000000")
#pragma comment(linker, "/STACK:1024000000,1024000000")
2014-08-10 15:16:19 4619
原创 hdu 3917 最大权闭合图
/*最大权闭合图;题意:一些城市需要建路需要一些公司来负责,每个公司需要交一定的税,每条路需要给公司一定的花费,还有一个限制条件,假如说公司a建立了a-b,公司b建立了b-c那么选择公司a 那么必须选择公司b。现在要求最大收益.解:设置一个源点和汇点,将选每个公司的收益和算出来,如果为正值和源点相连,如果为负值和和汇点相连权值为其绝对值,中间的公司之间有关系的权值置为inf,最大权闭合图
2014-08-10 13:05:05 1081
原创 hdu 4927 java程序
/*对于本题题意很简单关键在于求杨辉三角时的二项式是没有用到优化,导致超时。对于第n行的二项式的第i个可有第i-1个乘于一个数处于一个数得到,。假如n=6,i=4;C(n,i)=C(n,i-1)*(n-i+1)/i;*/import java.io.*;import java.math.*;import java.util.*;import java.text.*;public
2014-08-09 17:32:12 669
转载 最大权闭合图学习
[网络流]最大权闭合图(转载)来自: http://hi.baidu.com/%C6%AE%BB%A8%C4%EA%B4%FA/blog/item/45d4bb1765e7044721a4e960.html以下内容参考 胡伯涛 《最小割模型在信息学竞赛中的应用》,感谢他为我们提供这么优秀的论文。看不懂以上论文的同学,可以试试看一下以下内容,本文无大量的数学符号,方便阅读理解。 首先我
2014-08-07 10:37:36 496
原创 hdu 4859 最大点权独立集的变形(方格取数的变形)
/*刚开始不会写,最大点权独立集神马都不知道,在潘神的指导下终于做出来,灰常感谢ps;和方格取数差不多奇偶建图,对于D必割点权为0,对于.必然不割点权为inf。然后和方格取数差不多的建图.--.||E权值为2,,.||E--D权值为0.最大点权独立集=sum-最小点权覆盖。*/#include#include#includeusing namespace std;#define
2014-08-06 21:07:58 725
原创 hdu 3657最大点权独立集变形(方格取数变形)
#include#include#includeusing namespace std;#define inf 0x3fffffff#define N 2600#define ii 60struct node {int u,v,w,next;}bian[N*4*2];int head[N],yong,s,t,dis[N],ma[ii][ii],id[ii][ii],f[ii][
2014-08-06 20:01:30 537
转载 hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)
转载:http://blog.csdn.net/cold__v__moon/article/details/7924269/*这道题和方格取数2相似,是在方格取数2的基础上的变形。方格取数2解法: 由题意知对于每一个方格,有选与不选,显然是二分的最大独立集,先求最小点权覆盖(它的补集恰好 是最大点权独立集),对于任何一条可行流 s->u->v->t, 在求最大流或最小割的时候,在
2014-08-06 19:19:57 573
原创 hdu 1569 最大权独立集
/*最大点权独立集=sum-最小点权覆盖*/#include#include#includeusing namespace std;#define inf 0x3fffffff#define ll __int64#define N 3000struct node{ ll u,v,w,next;}bian[N*N*2];ll ma[N][N],id[N][N],h
2014-08-06 17:50:27 624
转载 网络流之最小点权覆盖和最大点权独立集学习
转载: 二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。 二分图最小点权覆盖 从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。建模: 原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t,将s和
2014-08-06 16:45:08 778
原创 hdu 4862KM&最小费用最大流
/**/#include#include#include#includeusing namespace std;#define inf 0x3fffffff#define N 500struct node{ int u,v,w,f,next;} bian[N*N*10];char ss[N][N];int ma[N][N];int manha(int i,int
2014-08-05 11:33:46 648
原创 最小费用最大流邻接表模板
int head[N],yong,pre[N];void init(){ memset(head,-1,sizeof(head)); yong=0;}void addedge(int u,int v,int w,int f){ bian[yong].u=u; bian[yong].v=v; bian[yong].w=w; bian[yong
2014-08-04 17:22:38 772
原创 poj 1724 最短路+优先队列(两个约束条件)
/*两个约束条件求最短路,用优先队列*/#include#include#includeusing namespace std;#define N 110struct node {int u,v,w,f,next;}bian[N*N*4];int head[N],yong,money;void init() {memset(head,-1,sizeof(head));yo
2014-08-04 11:41:31 771
原创 hdu 4786 最小生成树与最大生成树
/* 题意 :有一些边权值为1和0,判断是否存在一个生成树使得他的总权值为一个斐波那契数。 解法:建立一个最小生成树向里面加权值为1的边替换为0的边,保证原来的联通。因为权值为1,可直接求出最大生成树和最小生成树。 判断他们中间是否有斐波那契数即可,当然要先判断是否可以构成一个生成树。 这个我刚开始忘判断了。*/#include#include#include#defin
2014-08-02 20:17:31 498
原创 hdu 4081 最小生成树变形
/*关于最小生成树的等效边,就是讲两个相同的集合连接在一起 先建立一个任意最小生成树,这条边分开的两个子树的节点最大的一个和为A,sum为最小生成树的权值和,B为sum-当前边的权值 不断枚举最小生成树中的边找最优值即可。*/#include#include#include#include#define N 1100struct nodee{ int u,v;
2014-08-02 18:28:50 474
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人