2012年2月7日
摘要: POJ_3304 这个题一开始不知道project什么意思,理解成了判断是否存在一条直线能够和所有线段相交,后来百度project的意思之后发现原来是看是否存在一条直线使得当所有线段先直线投影之后,这些投影至少有一个公共点。理解对意思后反倒没什么思路了,后来想了一下突然发现原来就是要转化成我一开始那个“错误”的理解去做…… 我们不妨设存在这样的一条直线,那么当直线在合理的范围内旋转过程中一定会出现过某两个线段的端点的情况,所以我们只要枚举任意两个端点作为这样的直线即可。需要注意的是,当枚举的两个端点很近的时候,fabs(x1-x2)<1e-8&&fabs(y1-y2)&l 阅读全文
posted @ 2012-02-07 08:50 Staginner 阅读(757) 评论(0) 推荐(0) 编辑
摘要: POJ_2318 可以二分线段的位置,然后利用叉积去判断点在线段的左边还是右边即可。#include<stdio.h>#include<string.h>#define MAXD 5010int N, M, X1, Y1, X2, Y2, a[MAXD], b[MAXD], h[MAXD];long long int det(int x1, int y1, int x2, int y2){ return (long long int)x1 * y2 - (long long int)x2 * y1;}void init(){ int i, j, k; a[0] = b[ 阅读全文
posted @ 2012-02-07 06:46 Staginner 阅读(236) 评论(0) 推荐(0) 编辑