摘要: 题目链接: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 阅读(852) 评论(0) 推荐(0) 编辑
摘要: 题目链接: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 阅读(504) 评论(2) 推荐(0) 编辑
摘要: 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 阅读(366) 评论(0) 推荐(1) 编辑
摘要: 题目链接: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 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 计算几何一、引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助。二、目录(本文整理的计算几何基本概念和常用算法包括如下内容:)1. 矢量的概念2. 矢量加减法3. 矢量叉积4. 折线段的拐向判断5. 判断点是否在线段上6.. 阅读全文
posted @ 2012-08-14 08:38 pony1993 阅读(3678) 评论(0) 推荐(11) 编辑
摘要: 题目链接: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 阅读(766) 评论(0) 推荐(1) 编辑
摘要: [点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(point biconnected),简称双连通或重连通。一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cut point),又叫关节点(a 阅读全文
posted @ 2012-08-13 15:18 pony1993 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目链接: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 阅读(1067) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(1935) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(476) 评论(0) 推荐(0) 编辑

View My Stats