![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ解题报告
heartnheart
这个作者很懒,什么都没留下…
展开
-
poj2318
<br />计算几何的解题报告开始了!<br />这是第一道计算几何题,题目不难,但是题水人更水。<br /> <br />题意:有一个大箱子,由n个板分为n+1块,标号为0~n<br /> 已知盒子左上角和右下角的坐标及每个板上下两端的横坐标(板不会交错,且按顺序给出)<br /> 然后给出玩具的坐标,统计每块空间内玩具个数(保证玩具一定落在空间内)<br />方法:叉积+二分,判断点所在的空间<br />代码:#include <iostream>#include <原创 2010-10-06 09:32:00 · 1377 阅读 · 0 评论 -
poj3347
<br />题意:给予n个正方形,要求45°角放置,最左边的正方形紧贴Y轴,所有的正方形的下面的端点都在X轴上。然后按照正方形不能交错但要尽可能的挨着的原则,摆放,最后输出从上往下看能看到的正方形的编号。<br />方法:看了各种Discuss和解题报告,发现有个人的思路很不错,但他是将坐标纸缩小√2,这样并不能避免小数,其实扩大√2倍就能避免小数了。办法是,每新增一个正方形,就让他与左侧的每一个正方形贴紧,求的其左端坐标,最终结果一定是最大的那个。然后求的相应的最右端坐标。这样就转化为了线段,最后用朴素的原创 2010-10-16 22:18:00 · 1338 阅读 · 0 评论 -
poj1696
<br />题意:寻找逆时针螺旋线最多能连几个点,典型的贪心,每次都连最外面的点即可。<br />方法:每次找到一个当前点curp,除了第一次是对数组按纵坐标排序得出外,剩下的均按极角排序。效率为O(v2)<br />WA点:sqrt函数如果传int参数,在oj上会CE<br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>using原创 2010-10-16 00:08:00 · 1465 阅读 · 1 评论 -
poj1410
<br />题意,判断线段是否和矩形相交<br />WA点:线段在矩形内也算相交,另外,矩形只给对角线点,但不一定哪个,注意另外两个点的求法是<br />p3.x = p2.x;p3.y = p1.y;p4.x = p1.x;p4.y = p2.y;<br />我的方法是判断线段是否和四边相交,如不,继续判断线段是否在矩形内。<br /> <br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#原创 2010-10-15 19:05:00 · 887 阅读 · 0 评论 -
poj2826
<br />题意:平面上两条线段,问能接住多少雨水<br />方法:首先看两条线段能否相交,不相交肯定为0。<br /> 如果相交,求得交点后判断4个端点中是否存在两个点其纵坐标大于交点坐标,如果不存在,肯定为0<br /> 如果存在,判断高板是否将低板遮挡,过高于纵坐标的两个端点中较低的那个(p1)做垂线,如果交点存在且纵坐标大于p1纵坐标,<br /> 则被遮挡,为0。否则过p1做一条水平线与另一条线段相交得交点p3则面积就是 fabs(cross(p,p原创 2010-10-17 09:52:00 · 1064 阅读 · 0 评论 -
poj1066
<br />题意:一个正方形围墙内有一些交错的内墙,内墙的端点都在正方形上,在正方形内部有一个点,求从正方形外到这个点的最少要走的门数,门只能是线段的重点<br />方法:此题本想宽搜,但是太麻烦,看了Discuss后发现此题甚妙。因为从一个点到终点不可能“绕过”围墙,只能传过去,所以门是否开在中点是无所谓的,只要求四周线段中点到终点的线段与墙的最少交点个数即可。<br /> 更进一步,实际上,只需判断四周围墙的所有点与终点的连线与内墙的最少交点加一即可<br /> <br />代码:<br原创 2010-10-15 00:23:00 · 2060 阅读 · 0 评论 -
poj2653
<br />题意:按顺序给出一些木棍,输出在最上面的木棍标号<br />方法:用一个链表保存最上面的木棍,每读取一根木棍就将之与链表中的木棍求交,若相交则将链表中相交的剔除,最后将新的木棍加入链表。(此题不必考虑不规范相交的情况,测试数据貌似没有)<br />WA点:开始自己写的简单的链表,老是RE,(看来基本功很差,原因在于p指向一个node,我先把p删除了才p=p->next。大概用了700-800毫秒。改用C++的标准库vector竟然只用了600+而且省代码,但是用list就1200+了<br />原创 2010-10-14 16:36:00 · 1895 阅读 · 0 评论 -
poj1556
题意:房间里有n堵墙,每面墙上有两扇门,求从房间最左端中点到最右端中点的最短路径心得:解析很简单,简单的计算几何+简单的最短路径WA点:计算几何代码量大,很容易出错,这道题让我恶心了好几天╮(╯_╰)╭。首先是模板敲错了好几处,有很水的,像是2敲成-2,也有因为不熟悉的,比如敲晓东的图论模板head数组中存的是点我敲成了边。然后就是存储方式没有选好,晓东的思路跟我一样,每面墙6个点存好,但是他用的是二维数组,我用的是一维模拟二维,结果最后数据对撞的时候发现,错误的原因是模拟的时候寻址公式错了╮(╯_╰)╭少原创 2010-10-13 21:17:00 · 2072 阅读 · 0 评论 -
poj1269
<br />题意:判断两直线相交情况,模板题<br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;struct Point{ double x,y;};const double eps = 1E-6;int sig(double d){ return (d > eps) -原创 2010-10-06 21:17:00 · 727 阅读 · 0 评论 -
poj3304
<br />题意:给出n条线段,判断是否存在有一条直线,满足所有的线段在直线上投影后至少有一个公共点<br />方法:原命题等价为存在一条直线穿过所有的线段(易知过公共点且垂直于所求直线的直线符合条件,设为直线a),该命题又等价于从所有线段中任选两端点形成的直线存在可以穿过所有的线段的直线(可将a平移至一条线段端点,然后绕这点旋转,使a过另一条线段端点)<br /> <br />WA点:模板抄错,注意^的优先级比==低<br />代码:<br />#include <iostream>#include原创 2010-10-06 19:13:00 · 3734 阅读 · 1 评论 -
poj2398
<br />这道题是2318的升级版,题意参见2318解题报告,增加了两处难点,一是隔板不按顺序给出,sort一下就行了;二是输出格式有新的要求,要求输出有i个玩具的格子有几个<br />WA点:1、sort的时候sort(array,array+n,MyCmp)时只是对0~n-1个元素进行sort,而据题意该是0~n<br /> 2、这也是最2的地方,Box写成BOX,冒号后没加空格<br />代码:#include<iostream>#include<cstdio>#incl原创 2010-10-06 16:46:00 · 781 阅读 · 0 评论 -
poj1023
上午数据结构实验课无聊的搜了一下poj模拟题,发现此题,竟无思路,看Discuss也没看出个所以然来。就问***和****。大水给力个错误算法,上数据结构一直在想这个,竟然被提问了╮(╯_╰)╭,然后很悲剧的囧了半天,唉题意:给予ppnnp...的字符串及长度k表示的二进制系统,其中k表示共有几位,p表示此位位权为正,n表示此位位权为负。如果最右面一位位p则位权为1即2^0若为n则为-1即-2原创 2010-10-27 15:33:00 · 1573 阅读 · 0 评论