![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ
文章平均质量分 61
winkloud
这个作者很懒,什么都没留下…
展开
-
POJ 1382 Radar Installation
贪心题,要注意以岛为圆心,画出与岸边的左右交点,再对交点贪心即可。//Memory: 248K //Time: 63MS#include #include #include using namespace std;struct dist{ double l,r;};bool cmp(dist a,dist b){ return a.l<b.l;}int mai原创 2012-08-07 19:07:43 · 656 阅读 · 0 评论 -
POJ 1556 The Doors (计算几何+dij最短路)
好题啊好题!一个10*10的房间里,有n堵墙。每堵墙有两扇门,求最短路经先枚举门的端点,在判断端点连线是否有与其他墙相交,构图,最后dij求最短路!思路一定要清晰。最后,这题的数组最好开大点。不要天真的以为它只有9堵墙。。它有18堵啊有木有!!//Memory: 528K //Time: 0MS#include #include #include #define inf原创 2012-08-10 00:18:06 · 747 阅读 · 0 评论 -
POJ 1696 Space Ant (向量的叉积)
一只很特殊的蚂蚁,只能向坐转,并且不能经过已经走过的路。一张地图上有n个食物让蚂蚁去采集,求蚂蚁经过食物的顺序。一开始想偷懒,直接甩graham凸包模版上去,加了一条判断和搜索点的重排。。果断WA好吧果然还是不能偷懒啊!每确定一个点以它为起点找逆时针一个个碰到的点。。其实大概或许就是卷包裹求凸包了吧。。不太了解的说。。判断点用的就是叉积了//Memory: 260K //Time:原创 2012-08-10 20:38:59 · 1053 阅读 · 0 评论 -
POJ 1228 Grandpa's Estate (求稳定凸包)
一个凸包丢了一些点,剩下的点能否表示原凸包?先看一下什么情况下可以表示原凸包:现有的凸包每边都有3个以上的点。这样丢掉的点必定也在凸包上,否则现有的点不再凸包上,与已知不符。做法就是根据所给点再算一次凸包,判断每边是否有三个以上的点。注意,n常用的凸包模版有时会包含边上的点(比如起始三点共线),有的时候不会。借此机会整理下自己的凸包哈!//Memory: 260K //Ti原创 2012-08-11 10:25:48 · 936 阅读 · 0 评论 -
POJ 1654 Area (叉积求三角形面积)
一不明生物从原点出发,各种绕啊绕,绕啊绕,绕啊绕。。。。。求所绕过的面积。从原点出发,每走一次,与原点就形成了一个三角形。。他走过的区域,就是这些三角形的和所以就是算三角形面积了。三点叉积除2就是三角形面积了//Memory: 1228K //Time: 32MS#include #include #include #include using namespace std原创 2012-08-10 23:20:09 · 2259 阅读 · 0 评论 -
POJ 1434 Fill the Cisterns!(计算几何,二分)
一些不同高度的水箱组成连通器,求装下V体积液体时液面的高度将水箱按底部高排序。然后二分液面高度就可以了//Memory: 1744 KB //Time: 1391 MS#include #include using namespace std;struct cistern{ __int64 b,h,s; __int64 v;};cistern c[50004];b原创 2012-08-13 23:55:29 · 786 阅读 · 0 评论 -
POJ 2074 Line of Sight(判线段与直线相交)
题目大意:一栋漂亮的房子希望道路上的人可以看见,但是有一些障碍物在房子周围,无法透过障碍物看到房子。求可以在道路上看到房子的最大连续距离。有这么两点要注意:障碍可能在房子后,与房子平行,或者在道路的另一侧。这些障碍都不用算的。障碍可能在道路和房子外。(总之就是障碍可能在anywhere!)所求的是最大连续距离。//Memory: 216K //Time: 0MS#includ原创 2012-08-14 23:37:36 · 725 阅读 · 0 评论 -
POJ 1265 Area (简单多边形求面积+pick公式)
pick定理:面积=内部点数+边上点数/2 -1;开始做的时候脑袋发昏,敲了一个小时的模版,枚举点判断与多边形位置,果断TLE等脑子清醒了,多画了几个图,数了几次点,就A了。。//Memory: 180K //Time: 0MS#include #include struct POINT{ int x,y;};POINT p[110];int gcd(int a,in原创 2012-08-16 00:19:05 · 548 阅读 · 0 评论 -
POJ 1039 Pipe (枚举,判线段相交)
题目大意:一根由平行线段组成的管道,给出管道的上端折点,下端折点比上端折点高度少1。有一束光从入口射入,求可以照到的最远位置。思路:枚举任意两点,从入口处开始判断光线是否通过折点出(即与折点竖直线段相交)。记录最远位置并判断,输出即可。开始脑抽,总觉的光要沿着入口上下点射入。。放了三天果断1A了。。//Memory: 252K //Time: 63MS#include #inc原创 2012-08-18 21:53:36 · 416 阅读 · 0 评论 -
POJ 1862 Stripies (贪心)
题目大意:科学家发现一种奇怪的玩意,他们有重量weight,如果他们碰在一起,总重变成2*sqrt(m1*m2)。要求出最终的重量的最小值。思路比较容易想到,试一下就可以发现:对重量较大的先碰,可以对其多次sqrt,使得最后的结果最小。所以就是贪心了。数据比较小,sort排序即可。//Memory: 180 KB //Time: 0 MS#include #include原创 2012-08-19 10:08:41 · 1926 阅读 · 0 评论 -
POJ 2826 An Easy Problem?! (判点与线段的位置,求线段交点)
真的不是简单的问题啊!雨水从上方落下。接不到雨的情况:注意这两种是可以接到雨的都判断清楚了这题就好做了。//Memory: 192K //Time: 32MS#include #include #include #define EP 1E-6#define INF 1E100using namespace std;struct POINT{原创 2012-08-20 21:43:41 · 672 阅读 · 0 评论 -
POJ 1185 炮兵阵地 (状态压缩,DP,附测试数据)
话说POJ的这道题弱数据,网上的许多解题报告也有问题。。今天训练赛出了这道题,信心满满的拿原来的AC代码去交,WA+RE的体无完肤。。解题报告附上,慢慢研究!经典NOI题,矩阵里的状态压缩问题。因为m,而每列都有状态选或不选,所以想到用2进制,那么状态数是2^10。因为当前行的选择依赖于前两行,而前一行又依赖于前前两行,能想到状态转移方程应该牵扯到当前行、前一行、前前行,类似于递推式dp[i]原创 2012-08-24 21:05:51 · 1480 阅读 · 0 评论 -
POJ 2187 Beauty Contest (求平面最远点对)
很久以前的凸包模版题,又被翻了出来验证旋转卡壳法。。求凸包后枚举2点求距离也可以的。//Memory: 548K //Time: 110MS#include #include #include using namespace std;#define N 50001int top;int max(int a,int b){ return a>b?a:b;}struct原创 2012-08-27 23:45:52 · 423 阅读 · 0 评论 -
POJ 2653 Pick-up sticks (判线段相交)
一个人往地上扔棍子,相交的话,先扔的就会被压在下面,问最后哪几条棍子(线段)没有被压住?就是判线段相交了。。从下往上搜,被压住的话就不必判断了,这样的时间复杂度小于O(nlogn)如果从上往下搜,就是O(nlogn)嗯。。时间复杂度不是很懂啦,谁帮我分析下这个题的复杂度,反正从上往下搜会TLE~//Memory: 3408K //Time: 547MS#include #inc原创 2012-08-10 12:23:55 · 500 阅读 · 0 评论 -
POJ 2029 Get Many Persimmon Trees (标记)
给一个长宽已知的矩形,要求围起最多的树。数据量只有100*100,标记树的位置,暴力枚举所有的矩形找最大值就可以了//Memory: 188 KB //Time: 0 MS#include #include bool map[101][101];int max(int a,int b){ return a>b?a:b;}int main(){ int n,w,h,s,t原创 2012-08-09 10:33:52 · 450 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator(枚举+位运算)
和POJ1753翻转棋有些类似,4*4棋盘,共2^16种翻转方法,暴力枚举即可。也有另一种方法,遇+则翻一次,统计棋盘上每个点翻转的次数,为奇数的点即所求点//Memory: 672 KB//Time: 875 MS#include #include using namespace std;int main(){ int i,j,k,sum=0,min=17,out; in原创 2012-08-08 11:44:00 · 460 阅读 · 0 评论 -
POJ 2092 Grandpa is Famous (sort排序)
题目大意:爷爷是大神,现在大神要入吉尼斯,但是有人和大神竞争啊,大神想知道有谁和他竞争。输入N*M,N就是N次比赛,M是个人成绩,也是个人身份。N次比赛中出现次数最多的就是大神,要输出出现次数仅此于大神的所有人。解法:明白题意很好做,水题一道,一个sort就解决了//Memory: 200 KB //Time: 204 MS#include #include #include原创 2012-08-08 11:53:31 · 1679 阅读 · 0 评论 -
POJ 1905 Expanding Rods (二分+计算几何)
题意:一根木棒恰被夹在两堵墙中间,受热这跟木棒会膨胀,求膨胀后木棒偏离原位置的最远距离。分析:木棒由于两段被卡住,膨胀后为圆弧的一段(圆的张力最大),就是求弦到弧的距离了。这题有三个未知量:圆半径,弧的角度,还有最后要求的答案。这三个未知量知道一个就可以求出另外两个,所以此题有三种解法,即对三个未知量分别二分。另外注意c++和G++对double的输出不同。交错了就wa。。。//Mem原创 2012-08-08 12:04:51 · 428 阅读 · 0 评论 -
POJ 3125 Printer Queue
很简单的模拟,却被我做的很复杂。。其实做一个队列按照题目说明来循环就可以了//memory 208k//time 16MS#include using namespace std;int main(){ //freopen("1.in","r",stdin); //freopen("out.txt","w",stdout); int cas,i,j,k,n,m,num; i原创 2012-08-07 18:49:48 · 397 阅读 · 0 评论 -
POJ 1579 Function Run Fun
递归+记忆化搜索。//Memory 156K //time 0MS#include #define inf 0int f[21][21][21];int w(int a ,int b ,int c){ if(a <= 0 || b <= 0 || c <= 0) return 1; else if(a > 20 || b > 20 ||原创 2012-08-07 19:02:23 · 299 阅读 · 0 评论 -
POJ 1753 Flip Game
棋盘是4*4的,每个位置只有翻转和不翻转两种选择,总共2^16中选择,暴力枚举即可。用位运算来模拟翻转的位置。//Memory: 120K//Time: 219MS#include int min(int a,int b){ return a<b?a:b;}int main(){ char c; int p[17],t[17]; int i,j,k,sum=原创 2012-08-07 19:11:47 · 462 阅读 · 0 评论 -
POJ 2109 Power of Cryptography (大数开方)
可能很多人被10^100的数据吓到了,不知道怎么上手其实这题很容易的,double的数据可以达到10^300 啊另外,a的1/7次方,就是对a求7次根。。//Memory: 168 KB //Time: 0 MS#include#includeint main(){ double n,p; while(scanf("%lf%lf",&n,&p)!=EOF) { d原创 2012-08-08 12:09:51 · 525 阅读 · 0 评论 -
POJ 2318 TOYS (点与线段关系)
一个玩具箱被n个挡板分成n+1快,挡板不会互相交叉。将m个玩具扔进去,求分别被扔进了哪个区域。主要算法就是判断点与线段的关系,排序后从左往右依此判别即可。//Memory: 480K //Time: 485MS#include #include #include using namespace std;struct POINT //点{ double x,y; P原创 2012-08-08 20:05:33 · 336 阅读 · 0 评论 -
POJ 1113 Wall (凸包)
凸包基础题,求凸包周长。最后加上一个半径为L的圆即可。不理解的话算一下多边形内角和。//Memory: 236 KB //Time: 63 MS#include #include #include #include #define PI 3.14159265using namespace std;int top;struct POINT{ double x,y;};P原创 2012-08-08 18:05:08 · 300 阅读 · 0 评论 -
POJ 2398 Toy Storage (判断点与线段关系)
和2318一样的题。。输出改下就好了。思路就是判断点和线段的关系。。//Memory: 484K //Time: 16MS#include #include #include using namespace std;struct POINT //点{ double x,y; POINT():x(0),y(0){}; POINT(double _x, doubl原创 2012-08-08 20:35:55 · 375 阅读 · 0 评论 -
POJ 3304 Segments(判线段与直线相交)
开始看错了题意,以为是要投影到其中一条线段上,WA N次。。ORZ~实际的意思是,投影到任意条直线上都可以,只要投影间有交点即可。那么过这条被投影的直线做垂线,垂线必过所有的线段。如何求出垂线呢?因为垂线与所有线段相交,在保证相交的前提下旋转,那么最终会定于两线段端点。那么枚举端点,在对所有线段做跨立验证即可//Memory: 204K //Time: 32MS#include原创 2012-08-09 00:04:56 · 488 阅读 · 0 评论 -
POJ 2406 Power Strings (判字符串相同)
直接暴力就可以,注意暴力也要判断下,循环的长度要可以被总长整除再暴力啊。。//Memory: 1160K //Time: 266MS#include #include using namespace std;char str[1000005];int main(){ while(cin>>str) { if(str[0]=='.') break; int原创 2012-08-09 10:29:51 · 355 阅读 · 0 评论 -
POJ 1873 The Fortified Forest (枚举+凸包)
看了很久了的题了,集训的时候就看过,每棵树有自己的价值和长度,现在要砍掉一些书做成栅栏,来围起剩余的树,并要使砍掉的树价值总和最小。当时觉得有价值,树也有砍与不砍2种状态,就觉得这是DP,然后在死胡同里绕啊绕~~后来才发现,树2要从数据量上推算法啊!//Memory: 216K //Time: 172MS #include #include #includ原创 2012-09-12 20:19:54 · 559 阅读 · 0 评论