题意:

给定一个多边形,这个多边形的点都在格点上,问你这个多边形里面包含了几个格点。

题解:

对于格点多边形有一个非常有趣的定理:

多边形的面积S,内部的格点数a和边界上的格点数b,满足如下结论:

2S=2a+b-2

证明不难,对于格点长方形显然成立,对于高度为1的直角三角形也显然成立,那么我们想象,把两个满足皮克定理的多边形,沿着它们的一个平行与格线的边拼起来,假设拼的这个边长度为k,这两个图形原来在这里各有k个边界格点,拼起来之后,这2k个边界格点,变成了2个边界格点,和k-2个内部格点,神奇吧!它们的面积还是符合皮克定理, 任何图形都可以用长方形和高为1的直角三角形这样拼起来,因此定理得证。

边界格点数用gcd求,面积用叉乘求。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int maxn=1e5+10;
int n;
pll p[maxn];
inline ll gcd(ll m,ll n){return n?gcd(n,m%n):m;}
int main()
{cin>>n;for(int i=0;i<n;i++) scanf("%lld%lld",&p[i].first,&p[i].second);ll S2=0, b=0;for(int i=0;i<n;i++){S2+=p[i].first*p[(i+1)%n].second-p[i].second*p[(i+1)%n].first;b+=gcd(abs(p[i].first-p[(i+1)%n].first),abs(p[i].second-p[(i+1)%n].second));}cout<<(abs(S2)-b+2)/2<<endl;
}

转载于:https://www.cnblogs.com/isakovsky/p/11291650.html

Codeforces-GYM101873 G Water Testing 皮克定理相关推荐

  1. poj12652954 [皮克定理 格点多边形]【学习笔记】

    Q:皮克定理这种一句话的东西为什么还要写学习笔记啊? A:多好玩啊... PS:除了蓝色字体之外都是废话啊...  Part I 1.顶点全在格点上的多边形叫做格点多边形(坐标全是整数) 2.维基百科 ...

  2. 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理

    题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...

  3. Acwing:通电围栏(皮克定理)

    题目描述 农夫约翰的牧场可以看作是一个二维平面. 约翰为了方便看管他养的牛,构建了一个三角形的通电围栏. 他希望他的奶牛都在围栏围起的区域内活动. 三角形围栏的三个顶点位置坐标分别为 (0,0),(n ...

  4. POJ 1265-Area(计算几何+皮克定理+多边形面积公式)

    题目地址:POJ 1265 题意:给定一个格点多边形,求出内部点数in,边上点数on,和面积S. 思路:运用的定理很多. 1.皮克定理:S=in+on/2-1,即in=(2*S+2-on)/2. 2. ...

  5. NOJ 1434 Fence (皮克定理)

    Fence 时间限制(普通/Java):1000MS/3000MS         运行内存限制:65536KByte 总提交:59          测试通过:23 题目描述 In this pro ...

  6. Electric Fences_usaco3.4_皮克定理

    Description 给定两个整点(m,n)(m,n)和(p,0)(p,0),与坐标原点(0,0)(0,0)构成三角形,求三角形内的整点数量 Analysis 找到这么一道神奇的题目以及神奇的定理 ...

  7. 三角形的内点(皮克定理)

    题目: 在一个平面坐标系中,我们可以选出三个不全在一条线上的点构成一个三角形.我们称一个在三角形内(不包含三角形的边上),横纵坐标皆为整数的点位这个三角形的内点. 对于一个由(0,0).(n,m).( ...

  8. 三角形内部整点的个数【皮克定理】

    皮克定理 一张方格纸上,上面画着纵横两组平行线,相邻平行线之间的距离都相等,这样两组平行线的交点,就是所谓格点.如果取一个格点做原点O,如图1,取通过这个格点的横向和纵向两直线分别做横坐标轴OX和纵坐 ...

  9. 欧几里德算法与皮克定理

    欧几里德算法概述: 欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的. gcd函数的基本性质: gcd(a, ...

  10. usaco 3.4 Electric Fence 皮克定理

    一条直线((0,0),(n,m))上的格点数(包含端点)等于n与m的最大公约数+1 皮克定理: 面积A和内部格点数目i.边上格点数目b的关系:A = i + b/2 - 1 #include < ...

最新文章

  1. PMP每日三题(2022年2月15日)
  2. vue中 mock使用教程
  3. 概率分布之间的距离度量以及python实现(三)
  4. sql 2008找不到服务器,sql server 2005 数据库迁移问题总结——错误 ‘80004005’ 在 sys.servers 中找不到服务器 ‘XXX’...
  5. java 什么时候用递归_如果要用Java实现算法,一定慎用递归
  6. jquery的懒加载记录一下踩得坑
  7. Flexible 弹性盒子模型之CSS flex-shrink 属性
  8. LeetCode 1567. 乘积为正数的最长子数组长度
  9. Ajax基础知识梳理 1
  10. 自定义协同程序:CustomYieldInstruction
  11. Java Annotaion认识
  12. java中 運算符,Java中的運算符
  13. 上海大学计算机组成原理2期末,上海大学计算机组成原理历年试卷
  14. 小学steam计算机课程案例,STEAM教育与小学信息技术课程的融合
  15. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试网络基础)试题及答案操作.doc...
  16. 计算机复试考研专业课,2021考研计算机复试常考专业课内容
  17. 计算机切换用户界面键,电脑如何切换屏幕_电脑怎么切换另一个界面快捷键
  18. 控制面板打开后立即自动关闭
  19. Web.14.三层架构之购物车项目01
  20. HTML语言分栏左右比例怎么调整,wps怎么设置分栏排版?

热门文章

  1. Dalvik和Java运行环境的区别
  2. win7 IIS服务启动和停止
  3. 15.MongoDB的一致性(读关注与写关注)
  4. linux驱动目录在哪里,详细讲解Linux驱动程序
  5. filebeat配置介绍
  6. c++怎么确定一个整数有几位_《小数乘整数》说课稿
  7. Java发送https请求,综合post请求,get请求,获取网络返回的信息
  8. zookeeper的安装集群版
  9. 【渝粤教育】国家开放大学2019年春季 2083信息技术与教育技术(2) 参考试题
  10. 【渝粤教育】国家开放大学2018年春季 3722-21T燃气输配工程 参考试题