2012年2月16日
摘要: POJ_1329 题目主要就是在求三角形的外心,即各边中垂线的交点,推导出公式后直接计算即可。#include<stdio.h>#include<string.h>#include<math.h>#define zero 1e-8double x3, y3, x4, y4, x5, y5;double dcmp(double x){ if(fabs(x) < zero) return 0; if(x < 0) return -1; return 1;}char sign(double x){ return x < 0 ? '- 阅读全文
posted @ 2012-02-16 22:33 Staginner 阅读(327) 评论(0) 推荐(0) 编辑
摘要: POJ_1375 这个题目可以先用解析几何的方法求出每个圆的两条切线并得到阴影部分,最后再将阴影部分合并即可。 在合并阴影的时候,为了处理起来方便,可以先按左端点排序,这时可以从后往前枚举每个区间,然后从这个区间开始向前查找,如果前面某个区间和这个区间有交集,就删掉这个区间,并将前面那个区间的范围更新成两个区间的并集,这样做是O(n^2)的复杂度。 更好的办法就是首先将第一个区间的左端点赋给x,右端点赋给y,然后依次向后扫描区间,如果当前区间的左端点比y大就输出记录的x、y,并将x、y更新成当前区间的左右端点的值,如果当前区间的左端点不比y大,那么就将y更新成当前区间的右端点及y两者的较大.. 阅读全文
posted @ 2012-02-16 16:34 Staginner 阅读(456) 评论(0) 推荐(0) 编辑
摘要: POJ_2954 这个题目的核心是Pick定理:对给定顶点坐标均是整点的简单多边形,其面积A和内部格点数目i、边上格点数目b满足:A=i+b/2-1。 因此我们可以先求出三角形的面积以及边上的格点数,进而可以得到三角形内部的格点数。边上的格点数可以通过求|dx|和|dy|的最大公约数得到。#include<stdio.h>#include<string.h>int x1, y1, x2, y2, x3, y3;long long int ans, din, don;long long int det(int x1, int y1, int x2, int y2){ re 阅读全文
posted @ 2012-02-16 13:37 Staginner 阅读(189) 评论(0) 推荐(0) 编辑
摘要: POJ_1265 这个题目的核心是Pick定理:对给定顶点坐标均是整点的简单多边形,其面积A和内部格点数目i、边上格点数目b满足:A=i+b/2-1。 因此我们可以先求出多边形的面积以及边上的格点数,进而可以得到多边形内部的格点数。边上的格点数可以通过求|dx|和|dy|的最大公约数得到。#include<stdio.h>#include<string.h>long long int ans, din, don;int abs(int x){ return x < 0 ? -x : x;}long long int det(int x1, int y1, int 阅读全文
posted @ 2012-02-16 13:06 Staginner 阅读(248) 评论(0) 推荐(0) 编辑