08 2012 档案
POJ 1861 Network(最小生成树)
摘要:题目链接:http://poj.org/problem?id=1861求出最小生成树边的个数,最大边权,和所有边。代码:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;constintN=1001;intmap[N],ans[N];intnum,maxn,k,i;structedge{inta;intb;intvalue;}p[N*N];intfind(intx){intr=x;while(r!=map[r]){r=ma 阅读全文
posted @ 2012-08-17 19:28 pony1993 阅读(307) 评论(0) 推荐(0)
HDU 4379 The More The Better
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4379多么简单的一道题,比赛的时候竟然想着用数组存上,结果MLE了,然后就一直在纠结他的那句every pair of (Yi, Yj) satisfies Yi+ Yj<= L (1 ≤ i < j ≤ m),and every Yi<= L (1 ≤ i ≤ m )。。。。思路:从1-n算出Xi ,如果<=L/2,sum++,算的过程中记下<=L/2的最大值和>L/2的最小值,如果这两个值的和<=L,sum++。。代码:1#include<iost 阅读全文
posted @ 2012-08-17 08:38 pony1993 阅读(309) 评论(0) 推荐(0)
2012 Multi-University Training Contest 8
摘要:1001显然,题目给的是一个0/1规划模型。解题的关键在于如何看出这个模型的本质。3个条件明显在刻画未知数之间的关系,从图论的角度思考问题,容易得到下面3个结论:1.X12+X13+...X1n=1于是1号节点的出度为12..X1n+X2n+...Xn-1n=1于是n号节点的入度为13.∑Xki=∑Xij于是2~n-1号节点的入度必须等于出度于是3个条件等价于一条从1号节点到n号节点的路径,故Xij=1表示需要经过边(i,j),代价为Cij。Xij=0表示不经过边(i,j)。注意到Cij非负且题目要求总代价最小,因此最优答案的路径一定可以对应一条简单路径。最终,我们直接读入边权的邻接矩阵,跑一 阅读全文
posted @ 2012-08-16 19:43 pony1993 阅读(307) 评论(0) 推荐(0)
POJ 2585 Window Pains(拓扑排序)
摘要:题目链接:http://poj.org/problem?id=2585构图稍微复杂点,根据题目描述得到一个窗口的覆盖关系,根据覆盖关系可以构造一个有向图, 以9个窗口为顶点,如果A号窗口可以覆盖B号窗口,则有一条有向边<A,B>,构造完有向图后,如果是一个正常屏幕,则图为有向无环图(因为不可能存在A覆盖B,B覆盖A),所以该题可以拓扑排序判断环来解决。例如:题目中给的两个样例,可以构造为由图可知,第一组样例没有出现环,即屏幕是正常的,第二组样例出现了环,所以屏幕是不正常的。代码: 1#include<iostream>2#include<cstring>3# 阅读全文
posted @ 2012-08-16 10:36 pony1993 阅读(868) 评论(0) 推荐(0)
HDU 4362 Dragon Ball (DP)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4362设dp[i][j]表示第i批龙珠中取第j个需要花费的最小体力。dp[i][j] = min{ dp[i-1][k] + abs(pos[i-1][k]-pos[i][j]) } + cost[i][j];官方题解说这样会超时,但是是可以蹭过去的。。1#include<iostream>2#include<cstring>3#include<cstdio>4constintN=51;5constintM=1001;6constintinf=0x7fffffff 阅读全文
posted @ 2012-08-14 18:44 pony1993 阅读(515) 评论(2) 推荐(0)
2012 Multi-University Training Contest 7
摘要:1003Dragon Ball不用单调队列也蹭过去了代码:http://www.cnblogs.com/pony1993/archive/2012/08/14/2638697.html1001简单的图论题每条边除了有边权以外,还有一个字母标记。标记可以是“LOVE”里面任意字符。每个点,要拆成四个点,分别代表到达该点的标记为L,O,V,E的最短路。第一步就是求最短路,直接spfa就可以了。trick在于,至少要找到一个LOVE串,在只有一个节点的时候,有几条自环,至少必须走LOVE四条自环。此时,必须另外加一个节点表示开始节点。还有一个trick就是距离可能超过int。1 2 1314520 阅读全文
posted @ 2012-08-14 18:08 pony1993 阅读(378) 评论(0) 推荐(1)
HDU 1086 You can Solve a Geometry Problem too(规范相交模版)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086代码:1#include<iostream>2#include<cstdio>3usingnamespacestd;4constdoubleeps=1e-10;5structpoint6{7doublex;8doubley;9};10structline11{12pointa;13pointb;14}p[101];15doublecross(pointa,pointb,pointc)16{17//向量ac在ab的方向,顺时针为正18return(c.x-a.x)*(b. 阅读全文
posted @ 2012-08-14 10:53 pony1993 阅读(167) 评论(0) 推荐(0)
计算几何算法
摘要:计算几何一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助。二、目录(本文整理的计算几何基本概念和常用算法包括如下内容:)1. 矢量的概念2. 矢量加减法3. 矢量叉积4. 折线段的拐向判断5. 判断点是否在线段上6.. 阅读全文
posted @ 2012-08-14 08:38 pony1993 阅读(3790) 评论(0) 推荐(11)
POJ 1325 Machine Schedule(二分图最小点集覆盖)
摘要:题目链接:http://poj.org/problem?id=1325题意:A机器有n个模式,B机器有m个模式,有k个任务,第i个任务可以用A机器的ai模式或者B机器的bi模式,换模式需要重启,开始两个机器都在模式0,问最少需要重启几次。分析:要求最小的重启次数,也就是求出除了0模式,最少要工作在几个模式建图:A的模式为X集,B的模式为Y集,每个任务看做一条线,连接X集和Y集,则问题转化为求X、Y中最少的点,使得每条线至少有一个端点被选。即最小点集覆盖。根据最小点集覆盖=二分图最大匹配。代码:1#include<iostream>2#include<cstring>3# 阅读全文
posted @ 2012-08-13 19:41 pony1993 阅读(780) 评论(0) 推荐(1)
【转】图的割点、桥与双连通分支
摘要:[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(point biconnected),简称双连通或重连通。一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cut point),又叫关节点(a 阅读全文
posted @ 2012-08-13 15:18 pony1993 阅读(211) 评论(0) 推荐(0)
POJ 1469 COURSES(二分图最大匹配)
摘要:题目链接:http://poj.org/problem?id=1469复习了下二分图最大匹配,找了道水题。。水题的样例真水,打错一个字母都能过样例。。。。关于二分图最大匹配的资料见:http://www.cnblogs.com/pony1993/archive/2012/07/25/2607738.html思路:只要最大匹配数=课程数就OK代码:1#include<iostream>2#include<cstring>3#include<cstdio>4usingnamespacestd;5constintN=1001;6intn1,n2,k;7intmap 阅读全文
posted @ 2012-08-13 14:54 pony1993 阅读(1076) 评论(0) 推荐(0)
可图性判定—Havel-Hakimi定理(POJ 1659)
摘要:Havel—Hakimi定理:由非负数组成的非增序列s:d1,d2,···,dn(n>=2,d1>=1)是可图的,当仅当序列 s1:d2-1,d3-1,···,dd1+1-1,dd1+2,····,dn是可图的。序列s1中有n-1个非负数,s序列中d1后的前d1个度数减1后构成s1中的前d1个数。判定过程:(1)对当前数列排序,使其呈递减 (2)从S【2】开始对其后S【1】个数字-1 (3)一直循环直到当前序列出现负数(即不是可图的情况)或者当前序列全为0 (可图)时退出。例题:PO 阅读全文
posted @ 2012-08-11 16:04 pony1993 阅读(2101) 评论(0) 推荐(0)
【转】关于输出用%lf和%f的问题
摘要:C++果然是非常微妙的语言,%f和%lf对于printf()和scanf()的效果是不同的。事实上,对于printf(),无论是%f还是%lf,效果都是一样的。因为,遇到float,printf()会将float类型自动提升到double,所以不会有什么问题。而且严格地讲,printf()并没有对于%lf的定义,虽然很多编译器会接受,所以最好使用%f。而对于scanf(),由于接受的是指针,并没有类型提升的说法,所以对于double就应该用%lf,float就是%f。 阅读全文
posted @ 2012-08-11 15:25 pony1993 阅读(488) 评论(0) 推荐(0)
【转】看起来很神奇的高精度开方
摘要:Not quite understand,but amazing。。。。1#include<cstdio>2#include<iostream>3#include<cstring>4usingnamespacestd;56intl;78intwork(into,char*O,intI)9{10charc,*D=O;11if(o>0)12{13for(l=0;D[l];D[l++]-=10)14{15D[l++]-=120;16D[l]-=110;17while(!work(0,O,l))18D[l]+=20;19putchar((D[l]+1032)/ 阅读全文
posted @ 2012-08-10 07:30 pony1993 阅读(284) 评论(0) 推荐(0)
2012 Multi-University Training Contest 6
摘要:Problem 1001 HDU4350 Card代码:View Code1#include<iostream>2#include<cstring>3#include<cstdio>4usingnamespacestd;5intmain()6{7inta,t,i,n,m,k,num,cas=0;8intb[53],c[101];9scanf("%d",&t);10while(t--)11{12cas++;13num=0;14a=1;15for(i=1;i<=52;i++)16scanf("%d",& 阅读全文
posted @ 2012-08-09 19:23 pony1993 阅读(432) 评论(0) 推荐(0)
网络流题目集锦(by 戴神)
摘要:转载自daizhy_acm最终编辑AekdyCoin最大流POJ 1273 Drainage DitchesPOJ 1274 The Perfect Stall (二分图匹配)POJ 1698 Alice's ChancePOJ 1459 Power NetworkPOJ 2112 Optimal Milking (二分)POJ 2455 Secret Milking Machine (二分)POJ 3189 Steady Cow Assignment (枚举)POJ 1637 Sightseeing tour (混合图欧拉回路)POJ 3498 March of the Pengui 阅读全文
posted @ 2012-08-08 20:35 pony1993 阅读(669) 评论(0) 推荐(1)
强连通分量
摘要:有向图中, u可达v不一定意味着v可达u. 相互可达则属于同一个强连通分量(Strongly Connected Component, SCC)有向图和它的转置的强连通分量相同所有SCC构成一个DAG 1、强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因为没有一条路使得点4到达点1、2或3。2、强连通分量。在一个非强连通图中极大的强连通子图就是该图的强连通分量。比如图三中子图{1,2,3,5}是一个强连通分量,子图{4}是一个强连通分量。 ... 阅读全文
posted @ 2012-08-07 21:45 pony1993 阅读(16055) 评论(0) 推荐(0)
2012 Multi-University Training Contest 5
摘要:1011 HDU4349 Xiao Ming's Hope代码:View Code1#include<iostream>2#include<cstring>3#include<cstdio>4usingnamespacestd;56intmain()7{8intn;9while(~scanf("%d",&n))10{11intnum=1;12while(n>0)13{14if(n&1)15num*=2;16n/=2;17}18printf("%d\n",num);19}20return0; 阅读全文
posted @ 2012-08-07 20:36 pony1993 阅读(416) 评论(0) 推荐(0)
最小费用最大流
摘要:网络流的费用:在实际应用中,与网络流有关的问题,不仅涉及流量,而且还有费用的因素。网络的每一条边(v,w)除了给定容量cap(v,w)外,还定义了一个单位流量费用cost(v,w)。对于网络中一个给定的流flow,其费用定义为: 最小费用最大流问题给定网络G,要求G的一个最大用流flow,使流的总费用最小。求解MCMF问题的算法:在这里各种算法的证明以及原理的详解不再赘述,仅仅介绍算法的过程。相关内容感兴趣的同学可以自己去搜索资料。 最小费用最大流最常用和基本的算法我们可以称它为最小费用路算法,其思想与求最大流的增广路算法类似,不断在残流网络中寻找从源s到汇t的最小费用路,即残流网络中从s到t 阅读全文
posted @ 2012-08-05 16:53 pony1993 阅读(11811) 评论(0) 推荐(2)
2012 Multi-University Training Contest 4
摘要:1001 Image Recognition题解: 本题题目大意在一个01方阵中找出四条边全都是1的正方形的个数,对于正方形内部则没有要求。 一个直观的想法是首先用N^2的时间预处理出每一个是1的点向上下左右四个方向能够延伸的1的最大长度,记为四个数组l, r, u, d。然后我们观察到正方形有一个特征是同一对角线上的两个顶点在原方阵的同一条对角线上。于是我们可以想到枚举原来方阵的每条对角线,然后我们对于每条对角线枚举对角线上所有是1的点i,那么我们可以发现可能和i构成正方形的点应该在该对角线的 [i, i + min(r[i], d[i]) – 1] 闭区间内, 而在这个区间内的点 j 只要 阅读全文
posted @ 2012-08-02 17:20 pony1993 阅读(338) 评论(0) 推荐(0)


View My Stats