匹克定理pick
与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的更多相关文章
- POJ 2954 Triangle (pick 定理)
题目大意:给出三个点的坐标,问在这三个点坐标里面的整数坐标点有多少个(不包含边上的) 匹克定理:I = (A-E) / 2 + 1; A: 表示多边形面积 I : 表示多边形内部的点的个数 E: 表示 ...
- Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
题目传送门 刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何. 题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数. 因为必修5和必修2的阴影很快就想到了数学中 ...
- POJ 1265 Area (Pick定理 & 多边形面积)
题目链接:POJ 1265 Problem Description Being well known for its highly innovative products, Merck would d ...
- 洛谷 P2735 电网
https://www.luogu.org/problemnew/show/P2735 定理什么的最讨厌了,匹克定理?不会,也不想学. 粉色的为电网,将图中的电网我们将他构造一个矩形,然后蓝色和绿色的 ...
- HDU 3775 Chain Code ——(Pick定理)
Pick定理运用在整点围城的面积,有以下公式:S围 = S内(线内部的整点个数)+ S线(线上整点的个数)/2 - 1.在这题上,我们可以用叉乘计算S围,题意要求的答案应该是S内+S线.那么我们进行推 ...
- 【POJ】2954 Triangle(pick定理)
http://poj.org/problem?id=2954 表示我交了20+次... 为什么呢?因为多组数据我是这样判断的:da=sum{a[i].x+a[i].y},然后!da就表示没有数据了QA ...
- 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 ...
- Area(Pick定理POJ1256)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5429 Accepted: 2436 Description ...
- poj 2954 Triangle(Pick定理)
链接:http://poj.org/problem?id=2954 Triangle Time Limit: 1000MS Memory Limit: 65536K Total Submissio ...
随机推荐
- MVC验证
前言 MVC自己的验证机制,通过一个案例记录学习的成果. 首先,model代码如下: public class Students { [Display(Name = "I ...
- 使用jetty的continuations实现"服务器推"
在实际的开发中,我们可能会有这样的场景:许多客户端都连接到服务器端,当有某个客户端的消息的时候,服务器端会主动"推"消息给客户端,手机app的推送是一个典型的场景(IOS的推送都是 ...
- VC 测试一段程序的运行时间 精确到ms
分三个步骤 1:声明变量 LARGE_INTEGER litmp; _int64 QPart1,QPart2; double dfMinus,dfFreq, dfTim; QueryPerforman ...
- visual studio 2013设置背景图片
今天听了公司的一个经验分享会,发现VS竟然可以设置背景图片!还是个萌妹子!!被萌了一脸鼻血!!! 设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstud ...
- 一些常用的opencv函数
分配图像空间: IplImage* cvCreateImage(CvSize size, int depth, int channels); size: cvSize(width,hei ...
- Ubuntu 16.04: How to install OpenCV
参考:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ 步骤# 1:安装opencv的依赖项 本 ...
- Oracle安装部署之linux OS install oracle database安装脚本
#!/bin/bash#Purpose:Create and config oracle install.#Usage:Log on as the superuser('root') #1.creat ...
- Python实现简单HTTP服务器(一)
一.返回固定内容 # coding:utf-8 import socket from multiprocessing import Process def handle_client(client_s ...
- eclipse maven build、maven clean、maven install和maven test的区别 精析
1.情景展示 选中maven项目,右键-->Run As或Debug As-->maven buid,maven install,maven test有什么区别? 2.区别说明 ...
- 14nm或于6月量产,中芯首次披露12nm及第二代FinFET "N+1"计划(详细数据)
日前中芯国际公布2018年度第四季度业绩,实现营收7.88亿美元,14nm工艺进入客户验证阶段,可望于今年6月份量产,且12nm工艺开发取得突破. 根据中芯国际披露的财报,2018年第四季度实现营业收 ...