图论
laziercs
这个作者很懒,什么都没留下…
展开
-
2012 ACM/ICPC Asia Regional Online Warmup-1007
/*解题思路是: 先单独用红色边构一次树,用到的红色边为R1,那么剩下的n-1-r1条边一定是用蓝色构建的(因为这个图一定可以构成一颗生成树),再单独用蓝色边去构一次树,用到的蓝边数为不b1,那么k就只能介于n-1-r1到b1之间了因为如果存在k《n-1-r1,那么红色和蓝色加在一起就不能构成一棵树了,如果k》b1,那么就一定有蓝色边构成的环也不符合题意;综上所述,只要判断k是否在n-1-原创 2012-08-29 12:52:09 · 640 阅读 · 0 评论 -
图论知识点记录
//此知识点记录一下学习的思路:比较经典的题目了,首先按照边权分离边,从小到大添加进树中,可以知道相同边权的边形成的联通分支是一样的,所以在上一次操作存留下来的图中对每种边权先求一次生成树,记录哪些联通分支被连起来了,再按照这些联通分支进行构图,求这个图中不同的生成树的个数,这一步按照Kirchhoff定理求幺模矩阵的秩就可以了原博客:http://hi.b原创 2013-07-23 11:30:49 · 863 阅读 · 0 评论 -
hdu 3666 THE MATRIX PROBLEM(判负环)
解题思路:(U,L,mat[i][j])>0;因为题目要判定 L因为减号具有传递性(比如a-b=5,b-c=5由传递性得a-c=10),因为图即具有传递性(可以求出一颗最短路径树的图),又具有矛盾性(负环,下面会详细介绍),我们就可以把它抽象成图来判定判定负环log(ai)-log(bj)log(L/mat[i][j])=-log(U/mat[i][j]);如果原创 2013-07-10 19:29:28 · 742 阅读 · 0 评论 -
ZOJ 3717 Balloon (2sat+二分)
这题是一个二分半径+判定的题,但是开始不知道怎么去判定,以前听别人提起过sat问题,感觉这题是一个2sat模型,因为有一些限制比如:同一组两个里面只能选一个,两个球重叠时只能选其中的一个等,这很符合2sat的模型,于是去翻了下白书上2sat问题的解法实现,建图后直接用搜索判定,我用这种方法写了写,开始提交wa了几次,wa的原因是:题目说在round之后也要保证不重叠,那就只有舍掉小数点3位以后的数原创 2013-06-30 13:45:33 · 1503 阅读 · 0 评论 -
2sat 题目练习
2sat 问题的练习这个博客收集很多:http://www.cnblogs.com/ambition/archive/2011/07/30/2-sat.html hdu 3062:裸的,(基本的2选一,限制的2选1,如果能在限制的条件下实现基本的2选1表示题目有解),代码如下:#include#includestruct E{ int t,next;}edge原创 2013-06-30 14:48:57 · 757 阅读 · 0 评论 -
zoj 1030 (dfs+几何)
//从每一个点开始,向某一个几何方向dfs搜索几何圈,然后判断几何圈里有没有其他的点,再把几何圈去重就是答案,O(n^3).#include#include#include#include#include#includeusing namespace std;struct Point{ int x,y; Point(int a=0,int b=0):x(a),原创 2013-07-12 20:04:15 · 914 阅读 · 0 评论 -
hdu 1625(flyd判正环)
//自己能到自己,则表示这个点在环上;#include#include#includeusing namespace std;int mat[31][31],n,m;int main(){ int a,b,i,j,k,cas=0; while(scanf("%d",&m)!=EOF) { memset(mat,0,sizeof(ma原创 2013-07-11 21:05:23 · 881 阅读 · 0 评论 -
最小 k 度限制生成树
原文地址:http://blog.163.com/surgy_han/blog/static/2079912702012112884113774/所谓最小 k 度限制生成树,就是指有特殊的某一点的度不能超过k时的最小生成树。简单思想:设特殊的那点为v0,先把v0,删除,求出剩下连通图的所有最小生成树,假如有m棵最小生成树,那么这些生成树必定要跟v0点相连,也就是说这棵生成树的v0点转载 2013-04-06 09:58:42 · 944 阅读 · 0 评论 -
ZOJ 3691 Flower
/*题目: Flower题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4974题目大意: 三维空间中有n个点,序号为1-n,每个点有一个坐标,每个点上有F[i]朵花,每个点只允许L[i]朵花从这个点转移出到别的点,每两个点之间的距离为欧几里得距离,现在Gao的女朋友要把序号2-n点原创 2013-04-02 19:13:05 · 1191 阅读 · 0 评论 -
KM算法 详解+模板
//原文地址:http://blog.sina.com.cn/s/blog_691ce2b701016reh.html【KM算法及其具体过程】(1)可行点标:每个点有一个标号,记lx[i]为X方点i的标号,ly[j]为Y方点j的标号。如果对于图中的任意边(i, j,W)都有lx[i]+ly[j]>=W,则这一组点标是可行的。特别地,对于lx[i]+ly[j]=W的边(i, j,W),称转载 2013-03-01 15:58:32 · 1070 阅读 · 0 评论 -
hdu-4411-Arrest
//这题不会做,看了大牛的解题报告才知道用费用流可解,不怎么熟悉,今天调试了一上午,终于弄明白了,其实最小费用流本身很好理解,最小费用在求最大流的时候和一般的网络流的盲目增广不同,而是选最小费用来增广,最后到不能增广为止,这题的难点就是怎么去构建成最小费用流;详细思路具体参见下面这两个人的博客:http://blog.csdn.net/flying_stones_sure/articl原创 2012-09-24 14:04:29 · 890 阅读 · 0 评论 -
hdu 2485
//拆点建边,组成一个图,求最大流,先两次bfs,搜出各点到1点和n点的最短路,然后拆点时,如果这个点到1点和n点的最短路之和小于等于k,就把i到i+n的流量设为1,否则为0,图中原来的边的流量为inf,最后就是一个最大流的问题了;//这题用最小费用流也可解,稍后补上代码//最大流的代码:#include#include#includeusing namespace st原创 2012-09-23 11:09:33 · 779 阅读 · 0 评论 -
最小费用最大流
最小费用最大流//转自:http://www.cppblog.com/guojingjia2006/archive/2009/11/12/57905.html最小费用最大流 修改的dijkstra + Ford-Fulksonff算法修改的dijkstra其实和Johnson算法的思想是一致的。 一个求最小费用最大流的朴素算法是这样的:1 求最小费用增广路2 判转载 2012-09-20 09:09:34 · 608 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Chengdu Online-hdu-4289
//拆点后就是一个最小割问题,直接用最大流来做; //第一次写,代码效率不高没有任何优化,dinic版代码如下: #include#include#includeusing namespace std;int Map[410][410],n;int pre[410],vis[410];int dinic(int start,int end){ int sum=0原创 2012-09-16 20:24:18 · 916 阅读 · 0 评论 -
hdu 4292
//网络流,直接对人进行拆点,边权值为1,构成的网络流就是:源点->food->人->人->drink->汇点的一个五层结构//直接写了个裸的,代码如下: #include#include#includeusing namespace std;#define inf 100000000int map[1000][1000];struct edge{ int to,n原创 2012-09-18 01:01:20 · 633 阅读 · 0 评论 -
hdu-4281
//一个mtsp模型题,以前只弄过tsp,第一次弄mtsp,大牛的解题报告让我受益匪浅,mtsp问题主要就是对一个mtsp分解成多个单tsp组合,并使组合后取得的值是一个最值; //代码如下: #include#include#include#define inf 10000000struct node{ int pre,sum,id;}list[200原创 2012-09-11 22:18:18 · 620 阅读 · 0 评论 -
Adventure of Super Mario
/*题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1210题意大概是:给你一个图,图中有m条边,图上的点由a个乡村和b个城堡构成,标号为1至a为乡村,b至a+b为城堡,最后求从a+b号城堡到1号乡村的最短路,但是走的过程中可以使用魔法靴,原创 2012-08-28 18:39:21 · 571 阅读 · 0 评论 -
hdu-4280
//最大流优化,sap模板 //代码如下: #include#include#include#define M 410000#define N 110000 using namespace std;#define INF 0x3f3f3f3fstruct edge{ int from,to,c,next;}edge[M];int ant,head[N],原创 2012-09-16 20:41:46 · 565 阅读 · 0 评论