POJ 1265 Area
来源:互联网 发布:淘宝客广告海报 编辑:程序博客网 时间:2024/05/22 09:07
POJ 1265 Area
用到了传说中的pick定理:
给定顶点座标均是整点(或正方形格点)的简单多边形,皮克定理说明了其面积A和内部格点数目i、边上格点数目b的关系:A = i + b/2 - 1。
(维基百科)
面积其实就是叉积和,边上点的个数是gcd(dx,dy);然后一切就可以搞定了。
不得不吐槽下POJ的G++。。。。。
表示很桑心。。。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define oo 1e6#define eps 1e-8#define nMax 100000#define pb push_back#define F first#define S second#define bug puts("OOOOh.....");#define zero(x) (((x)>0?(x):-(x))<eps)#define LL long long#define DB doubleint gcd(int a,int b){return b==0?a:gcd(b,a%b);}int main(){#ifndef ONLINE_JUDGEfreopen("input.txt","r",stdin);#endifint t,n;scanf("%d",&t);FOR(cas,1,t){scanf("%d",&n);int area=0,on=0,in=0;int x=0,y=0;int dx,dy;for(int i=0;i<n;i++){scanf("%d%d",&dx,&dy);int d = gcd(dx,dy);if(d<0) d=-d;on += d;area += x*dy - y*dx;x += dx;y += dy;}if(area<0) area=-area;in = area-on+2;in /= 2;printf("Scenario #%d:\n%d %d %.1f\n\n",cas,in,on,(DB)area/2.0);}return 0;}
- Poj 1265 Area
- poj 1265 Area
- POJ 1265 Area
- poj 1265 Area
- POJ 1265 Area
- POJ 1265 Area
- POJ 1265 Area
- POJ 1265 Area
- poj 1265 Area
- POJ 1265:Area
- POJ 1265 Area
- POJ 1265 Area
- poj 1265 Area
- poj-1265 Area
- poj 1265 Area
- POJ 1265 Area
- POJ 1265 Area
- poj 1265 Area
- 将ASP.NET MVC中的form提交改为ajax提交
- 归并排序
- linux平台设备驱动platform_device platform_driver
- Android之SurfaceView使用总结
- sqlserver2008连接oracle11g
- POJ 1265 Area
- App Engine Python 概述
- Infobright 4.5 版本的一些新特性详解
- 旋转的多维空间图形
- Java jdbc数据库连接池总结!
- 正则表达式学习日志
- 从零开始学习CocosBuilder(转自泰然论坛)
- AAuto_简单批量重命名
- 使用KGDB调试内核和模块