摘要: 题目链接:http://poj.org/problem?id=1083题目大意懒得写了,就是给n个线段,就覆盖点最多的覆盖数。本来想写线段树来着,结果一看数据范围我傻了...n^2都秒过。标号是有上下层的,要把数据搞到一行。不过题目特殊要注意它不是一小一大给的,而且处理完之后有可能是一个点。WA我两次悲剧...现在刷水题时间有所提高啊...目测本题15分钟AC~附代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namesp 阅读全文
posted @ 2012-03-14 18:04 Evan1004 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3264题目大意:给出平面上n个圆的圆心和半径,求一个大圆,它的圆心与某个给定圆的圆心重合,且对于每一个给定的圆,大圆至少覆盖面积的一半,求出满足要求的大圆的最小半径。分析:由于所求的大圆圆心只有n种选择,我们可以枚举大圆的圆心,然后求能够满足要求的最小半径,取半径最小的方案即可。 直接求满足要求的最小半径比较困难,但若我们已经知道一个半径,判断它时候覆盖了每一个圆至少一半的面积,问题就简单那多了。如果不会求圆的重合面积的话请移步 http://www.cnblogs.com/evan-oi/arc. 阅读全文
posted @ 2012-03-14 15:34 Evan1004 阅读(410) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://poj.org/problem?id=2546题目大意:RT。分析:如图,ACBD就是我们要求的面积,要想直接求显然是不可行的,我们可以把它拆成ACB和ADB两个楔形(是叫这个吧?),如果首先求ACB的话,只要求出扇形ACB和三角形OAB的面积相减就可以,而想求它们两个的面积就得求出角AOB的度数。怎么求呢,我们可以先用余弦定理求出角AOB的cos值,然后一个NB的东西就出场了(至少我这么想),cmath~,里面提供了反余弦函数,那我们就可以通过cos值直接得到角度。之后就随便搞一下就可以了。至此问题圆满解决。以后碰到相应的题目还可以当模板用。附代码:View Code 阅读全文
posted @ 2012-03-14 15:19 Evan1004 阅读(1006) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3268题目大意:已知每件物品的价格,第i件物品加k金钱可以换取第j件,价格相等的两件物品可以相互交换,求每个物品最小的购买Pi,和有多少个Pi=任意Pj+Pk。分析:转化成最短路,建立一个新源点s,对每个点加一条边,边权为它的原始价格。对可以价钱交换的点建边,边权为要加的钱,对每对价格相等的点建立边权为0的双向边,做一遍s的最短路即可。第二问简直坑爹,3重循环就办了。代码:View Code #include<cstdio>#include<cstdlib>#include& 阅读全文
posted @ 2012-03-14 09:50 Evan1004 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3262题目大意:教室里有N*M个座位,每个座位都有一个舒适值,有K个学生进入教室占座,先到的先占。第k个学生需要占Ki个坐连续的座,并要求最西边的舒适值最高。如果无法占连续的Ki个座位,那么这个学生就会占一个舒适值最高的座(好自私...)。如果占不到座位,就会离开教室。分析:普通的模拟,不过因为没读穿题导致WA两次悲剧...代码:View Code #include<iostream>#include<cstdio>#include<cstring>#includ 阅读全文
posted @ 2012-03-13 11:09 Evan1004 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=1834题目大意:给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求: 1、 在不扩容的情况下,1到N的最大流; 2、 将1到N的最大流增加K所需的最小扩容费用。第一问很好写,按原流量0费用建边,最大流随便一搞就行,第二问也挺好写,在原来边的基础上另加一条无限流量原费用的边,和一个与原源点相连流量为k,费用为0的新汇点,费用流搞一下就好了。代码:View Code #include<cstdio>#include<cstdli 阅读全文
posted @ 2012-03-12 18:50 Evan1004 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=1191题目大意:有m道题,每道题都对应两种锦囊可以回答对。每种锦囊只能用一次,答对一题继续下一题,不能答对结束。求能回答最多的题数。分析:每一道题对应一个锦囊,第一想法就是:最大匹配!每一个点连接能解他的锦囊,做一遍匈牙利,一旦发现不能匹配就退出。(最近总是用最大流做二分图匹配,结果今天写了一半发现sap没法判断这个情况啊悲剧)。代码:View Code #include<cstdio>#include<cstdlib>#include<cstring> 阅读全文
posted @ 2012-03-12 11:15 Evan1004 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题什么的都不用说了吧,直接切正题:给N个点,求能画出的不相交矩形数量最多。然后就直接一个一个的求凸包,知道剩下三个以下的点。就是答案了。我用的水平序,搞一下就好了。附代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define MaxN 2010struct atp{ int x,y; }p[MaxN];int s[MaxN],a[MaxN]; 阅读全文
posted @ 2012-03-03 16:56 Evan1004 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3683题目大意:给一个五子棋的棋局,求在3步之内的胜负可能。题目分析:嗯,比较简单是吧。现在首先设给定棋局由A方先走,则只需判定如下情况:1、若A有获胜策略,则A一步获胜。2、若1不成立,B有两个或以上获胜策略,则B的第二步获胜(A第一步只能阻止一种策略)。3、若1不成立,B只有一种获胜策略,则A的第一步必然在B的获胜点上,然后判断此时A是否有两个以上必胜点,若有,则A三步获胜。4、若以上情况均不成立,则枚举A的第一步走法,如果有一种第一步使A拥有两个获以上获胜策略,则A三步获胜。否则三步之内没人获 阅读全文
posted @ 2012-02-29 15:49 Evan1004 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3682题目大意:给一个三维立方体,每次消除一行平行与坐标轴的小立方体(边长1),求一共消除了多少块。分析:说不上分析了,给每一块小立方体一个标号,方法随便,哈希就可以了,不过不知道为什么我的哈希一直TLE,不知道是写错了还是怎么回事,无奈快排一下写了。附代码:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using 阅读全文
posted @ 2012-02-28 18:36 Evan1004 阅读(352) 评论(0) 推荐(0) 编辑