与POJ1226为例

要知道在一个格点多边形内 知道期内部的点数 Q,边上的点数L,就可以知道他的面积pick定理及 S=Q+L/2-1;

然后 还有边上的点数除了多边形的顶点外,还有一些点该怎么求呢,嘎嘎,记得之前欧几里得吗?两个点的差值,及X轴的差值和Y轴的差值,然后很自然的想到了最大公约数为什么最大公约数就是经过的整格点的个数呢? 当时我是这么想的,当X与Y增长相同的时候,他们的经过的整格点数无疑是X个,当其中一个n倍数式的增加的时候同样,因为之前的1:1的增长现在只不过变成了1:n罢了.那当两个同时增长的时候分别增长n,和m倍.的时候只不过比变成了n:m罢了嘎嘎现在应该明白了好了

#include <iostream>
#include<cstdio>
#include<string.h>
#include<cmath>
using namespace std;
struct point
{
double x,y;
point (double a=0,double b=0){x=a;y=b;}
};
struct point p[105];
double cross(point a,point b)
{
return a.x*b.y-a.y*b.x;
}
double work(int n)
{
int i;
double sum=0;
for(i=0;i<n;i++)
sum+=cross(p[i],p[(i+1)%n]);
return sum/2;
}
int gcd(int a,int b)
{
int t;
if(a<b)
{
t=a;a=b;b=t;
}
if(b==0)return a;
else return gcd(b,a%b);
}
int main()
{
int t,n,i;
int x,y,k;
double sum;
int num1,num2;
scanf("%d",&t);
k=0;
while(t--)
{
num2=0;
scanf("%d",&n);
p[0]=point(0,0);
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
p[i].x=p[i-1].x+x;
p[i].y=p[i-1].y+y;
x=x>0?x:-x;
y=y>0?y:-y;
num2+=gcd(x,y);
}
sum=work(n);
num1=(2*sum+2-num2)/2;
printf("Scenario #%d:\n",++k);
printf("%d %d %.1lf\n\n",num1,num2,sum);
}
return 0;
}

匹克定理pick的更多相关文章

  1. POJ 2954 Triangle (pick 定理)

    题目大意:给出三个点的坐标,问在这三个点坐标里面的整数坐标点有多少个(不包含边上的) 匹克定理:I = (A-E) / 2 + 1; A: 表示多边形面积 I : 表示多边形内部的点的个数 E: 表示 ...

  2. Luogu P2735 电网【真·计算几何/Pick定理】By cellur925

    题目传送门 刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何. 题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数. 因为必修5和必修2的阴影很快就想到了数学中 ...

  3. POJ 1265 Area (Pick定理 & 多边形面积)

    题目链接:POJ 1265 Problem Description Being well known for its highly innovative products, Merck would d ...

  4. 洛谷 P2735 电网

    https://www.luogu.org/problemnew/show/P2735 定理什么的最讨厌了,匹克定理?不会,也不想学. 粉色的为电网,将图中的电网我们将他构造一个矩形,然后蓝色和绿色的 ...

  5. HDU 3775 Chain Code ——(Pick定理)

    Pick定理运用在整点围城的面积,有以下公式:S围 = S内(线内部的整点个数)+ S线(线上整点的个数)/2 - 1.在这题上,我们可以用叉乘计算S围,题意要求的答案应该是S内+S线.那么我们进行推 ...

  6. 【POJ】2954 Triangle(pick定理)

    http://poj.org/problem?id=2954 表示我交了20+次... 为什么呢?因为多组数据我是这样判断的:da=sum{a[i].x+a[i].y},然后!da就表示没有数据了QA ...

  7. UVa 10088 - Trees on My Island (pick定理)

    样例: 输入:123 16 39 28 49 69 98 96 55 84 43 51 3121000 10002000 10004000 20006000 10008000 30008000 800 ...

  8. Area(Pick定理POJ1256)

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5429   Accepted: 2436 Description ...

  9. poj 2954 Triangle(Pick定理)

    链接:http://poj.org/problem?id=2954 Triangle Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

随机推荐

  1. 检测硬件RDMA卡是否存在

    1.检查网卡是否安装成功: # lspci | grep Mellanox 83:00.0 Ethernet controller: Mellanox Technologies MT27710 Fam ...

  2. C语言位操作--两整数中的最大值与最小值

    不用选择分支找出指定两整数中的最大值与最小值: int x; int y; // 找出x与y的最大值与最小值 int r; // r保存结果 r = y ^ ((x ^ y) & -(x &l ...

  3. 改变presentModalView大小

    rc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; rc.modalPresentationStyle = UIModalP ...

  4. HP P2xxx/MSA SMI-S Provider

    HP P2xxx/MSA SMI-S Provider The HP MSA provider must be enabled before it can be monitored. For more ...

  5. 【CF840D】Destiny 分治(线段树)

    [CF840D]Destiny 题意:给你一个长度为n的序列,q次询问,每次指定l r k,求[l,r]中出现次数$>\frac {r-l+1} k$的所有数中最小的那个数. $n,q\le 3 ...

  6. jenkins之另辟蹊径实现根据svn项目实现智能选择

    项目要求,根据svn选择的trunk或branches及tags里的各分支,动态选择参数.一开始认为很简单,直接用jenkins中的List Subversion tags插件及active choi ...

  7. yii---进行接受参数

    GET接受参数: Yii::$app->request->get($key, $default):第一个参数($key)为用户get请求的key,第一个参数选填:第二个参数($defaul ...

  8. css 多行文字,超出部分隐藏,...代替

    css虽然简单,但其实也是记得常用的那些,不常用的还是要搜一搜再写

  9. Cloudrea manager5安装CDH5文档

    一.主机规划.存储规划 服务器配置信息:CentOS6.5 最小化安装+development tools组包,其余组件yum安装即可. 二.系统设置如下: 1.服务器信息如下(/etc/hosts文 ...

  10. 洛谷P1083 借教室 NOIP2012D2T2 线段树

    正解:线段树 解题报告: ...真的不难啊只是开了这个坑就填下? 就是先读入每天的教室数建个线段树然后每次读入就update一下,线段树存的就这一段的最小值啊,然后如果有次更新完之后tr[1]小于0了 ...