2012年2月13日
摘要: POJ_2074 首先来讲,我们能够看全房子的视野构成的平面一定是被某两个障碍物的端点卡住的(将Property Line的两个端点也视作障碍物的端点),否则我们的视野一定可以继续向两侧延伸。 于是,我们就可以枚举任意两个端点,然后计算出视野与Property Line相交的区间,然后再枚举所有障碍物,如果没有障碍物在这个视野之内,那么这个视野就是可行的,然后更新区间的范围即可。 此外,对于Property Line上最长区间长度为0的情况不必纠结,怎么处理都可以,经测试后认为题目应该没有这样的数据。 最后说明一下,这个题没有给出数据范围,但依网上的解题报告来看,障碍物的数量应该是不超过10. 阅读全文
posted @ 2012-02-13 23:30 Staginner 阅读(562) 评论(0) 推荐(0) 编辑
摘要: POJ_1584 这个题目思路是比较直接的,首先去判断这个多边形是否为凹多边形,如果不是凹多边形,就去判断圆是否在多边形内。 在判断多边形是否为凹多边形时,可以将相邻的两个线段做叉积,从而判断在沿四边形走时是否只向左或者只向右转,从而说明这个多边形是否为凹多边形。从discuss里面看到说有的数据相邻的两个线段是共线的,要注意一下这样的情况。 在判断圆是否在多边形内时,可以分两步,第一步判断圆心是否在多边形内,第二步判断圆和多边形是否“相割”。 判断圆心是否在多边形内时,可以先规定好多边形的正方向,然后看这个点是否在所有线段向量的同一侧。 判断圆和多边形是否“相割”时,可以先判断是否有多边形的 阅读全文
posted @ 2012-02-13 15:30 Staginner 阅读(178) 评论(0) 推荐(0) 编辑
摘要: POJ_3449 这个题目由于图形很少,思路还是很直接的,暴力就可以了,枚举任意两个图形,并枚举两个图形间所有线段的位置关系,如果存在两条线段相交,那么这两个图形就是相交的。 这个题的输入输出比较恶心,此外,对于正方形已知一对点求另一对点时可以用向量的旋转来求,首先求得正方形中心的坐标,然后将中心到两个点的连线看作两个向量,将这两个向量各旋转90度就可以得到中心到另外两个点的向量,进而就可以求得另外两个点的坐标了。向量的旋转可以参考矩阵运算中的一些内容:http://www.matrix67.com/blog/archives/276/。#include<stdio.h>#incl 阅读全文
posted @ 2012-02-13 11:49 Staginner 阅读(211) 评论(0) 推荐(0) 编辑
摘要: POJ_1039 比较容易理解,如果光线最优的话是可以认为至少与某两个点相切的,因为如果不和某两个点相切,我们可以将光线进行平移和旋转使其至少和某两个点相切,而且结果不会变差。 于是我们可以枚举任意两个顶点确定一条直线作为光线的路径,之后只要看这条光线最多能够射多远即可。一个可行的思路就是首先判定这两个顶点及以前的光线是否在管子内,如果在管子内,再依次去判定光线最远能射到哪里。判定光线是否在管子内可以判定光线与每对顶点的纵截面的交点是否在管子内。#include<stdio.h>#include<string.h>#define MAXD 50#define zero 阅读全文
posted @ 2012-02-13 08:51 Staginner 阅读(369) 评论(0) 推荐(0) 编辑