POJ Area 1265(pick定理)
来源:互联网 发布:湘北vs山王球员数据 编辑:程序博客网 时间:2024/05/16 11:35
大意:给定从原点出发到一些点,注意所给定的点并不是坐标而是结合上一步的位置应该移动到的位置。求出多边形上的点,内部的点,以及多边形的面积。
思路:多边形上的点的个数,可以用GCD(x,y)求出(x,y指的是当的移动量),多边形的面积可以用叉积计算,即从多边形上一个点开始,按照一定的方向移动(即向量的乘积我们要的是三角形的面积求出是平行四边形的面积所以要除以二)。最后用pick定理S=num边/2-1+num内
#include<map>#include<queue>#include<cmath>#include<cstdio>#include<stack>#include<iostream>#include<cstring>#include<algorithm>#define inf 0x3f3f3f3f#define eps 1e-8#define mod 1000000007#define ls l,mid,rt<<1#define rs mid+1,rt,rt<<1|1#define LL __int64using namespace std;struct node{ int x,y;}q[1010];int GCD(int a,int b){ return b==0?a:GCD(b,a%b);}double area(int a,int b,int x,int y){ return x*b - y*a;}int main(){ int n,m,i,j,k,cla,aa,bb; scanf("%d",&cla); for(int zu = 1;zu <= cla ;++zu){ scanf("%d",&n); int num1,num2; double s=0; num1=num2=0; q[0].x=q[0].y=0; for(i = 1;i <= n;++ i){ scanf("%d%d",&aa,&bb); q[i].x = q[i-1].x + aa; q[i].y = q[i-1].y + bb; num1 += GCD(abs(aa),abs(bb)); s += (double)area(q[i].x,q[i].y,q[i-1].x,q[i-1].y)*1.0; } printf("Scenario #%d:\n",zu); num2=-num1/2+1+(int )s/2; printf("%d %d %.1f\n\n",num2,num1,s*1.0/2.0); } return 0;}
0 0
- POJ 1265 Area (Pick定理)
- POJ 1265 Area (pick定理)
- POJ题目1265 Area(PICK定理)
- POJ 1265 Area(Pick定理)
- POJ Area 1265(pick定理)
- poj-1265-Area-pick定理
- POJ 1265 Area Pick定理
- POJ 1265 Area(Pick定理)
- poj 1265 Area(pick 定理)
- POJ 1265 Area(PICK定理)
- Area - POJ 1265 Pick定理
- POJ 1265 Area(Pick 定理)
- POJ 1265 Area (计算几何)(Pick定理)
- POJ 1265 Area(ZOJ 1032)(pick定理)
- POJ 1265 Area (有向面积, pick 定理)
- POJ 1265 Area(Pick定理、向量积求面积)
- POJ 1265 Area (Pick定理&多边形面积)
- poj 1265 Area 计算几何Pick定理 && poj 2954 Triangle
- 关于u3d中需要注意一些地方
- const、static变量存放位置
- Android APP 开始的动画效果
- 解决下拉刷新偏移
- 服务注册问题--未能加载文件和程序集
- POJ Area 1265(pick定理)
- 自动化测试关键字驱动的原理及实现
- First Blood
- ios TableView性能优化技巧
- 终于,零基础也能把App做的风生水起
- 生日了,总要写点什么
- Android控件之ToggleButton
- Hibernate createCriteria 使用
- JavaScript中的各种括号用法