( 算法树之几何 )【 皮克定理 】
( 算法树之几何 )【 皮克定理 】
皮克定理是有关格点多边形的面积计算问题,因此在了解皮克定理前,我们要先看一下什么是格点多边形:
一、格点多边形
如图,每个小正方形的边长是1,图中的小正方形的顶点称为"格点",如果一个多边形的每个顶点都在格点上,则称该多边形为"格点多边形",如下图所示是格点四边形。
1899年,奥地利数学家乔治亚历山大匹克对格点多边形面积计算问题给出了以下公式:格点多边形面积=内点数+边界点数÷2-1,如果用m表示内点数,n表示边界点数即:S=m+n÷2-1
这个结论我们称作匹克定理。用它来计算格点多边形方便多了。
这么求边界点数?
1、对于两端点(x1,y1),(x2,y2)都再格点上的一条线段,该线段上的格点数目为gcd( |x1-x2|,|y1-y2| )+ 1,这很好理解,对于横坐标差值和纵坐标差值求得的最大公因数g,相当于将横坐标差值分成g份,由于是整除,因此显然每份的左右端点都是整数,对于纵坐标也是同样的道理,由于是最大公因数,所以不可能再分更多份,因此gcd( |x1-x2|,|y1-y2| )
即求得两端点间最多能分成多少段由格点分割的线段,再加上1即整条线段上的格点数目。
例题1:Gym 101873G
题意:按照顺时针给出n个点,点的坐标为整数,求n个点围成的凸多边形内部有几个点xy都是整数。
思路:就是求内点数,多边形面积可以求出,边界点数也可以求出。
代码:
#include <bits/stdc++.h>
#define int long longusing namespace std;int x[200002],y[200002];
int n;signed main()
{cin >> n;for ( int i=0; i<n; i++ ) scanf("%lld %lld",&x[i],&y[i]);x[n]=x[0]; y[n]=y[0];int sum = 0, b=0;for ( int i=0; i<n; i++ ) {sum += (x[i]*y[i+1]-x[i+1]*y[i]);b += __gcd( abs(x[i]-x[i+1]), abs(y[i]-y[i+1]) );}if ( sum<0 ) sum=-sum;cout << (sum-b+2)/2 << endl;return 0;
}
( 算法树之几何 )【 皮克定理 】相关推荐
- 孙子算经余数C语言,行测数量关系备考:探索《孙子算经》之剩余定理
深圳公务员考试网:行测数量关系备考:探索<孙子算经>之剩余定理.市考期间,深圳中公教育将准备各类备考活动,如笔试峰会.模考大赛.免费公开课等,请大家留意关注,踊跃参与,更多2020深圳公务 ...
- 孙子算经余数C语言,2020国考行测备考:探索《孙子算经》之剩余定理
国家公务员考试网同步陕西华图考试动态信息2020国考行测备考:探索<孙子算经>之剩余定理,更多关于国考,行测,备考,数量关系的信息内容,请关注国家公务员考试网,以及陕西华图教育(snhua ...
- 三角形内部整点的个数【皮克定理】
皮克定理 一张方格纸上,上面画着纵横两组平行线,相邻平行线之间的距离都相等,这样两组平行线的交点,就是所谓格点.如果取一个格点做原点O,如图1,取通过这个格点的横向和纵向两直线分别做横坐标轴OX和纵坐 ...
- poj12652954 [皮克定理 格点多边形]【学习笔记】
Q:皮克定理这种一句话的东西为什么还要写学习笔记啊? A:多好玩啊... PS:除了蓝色字体之外都是废话啊... Part I 1.顶点全在格点上的多边形叫做格点多边形(坐标全是整数) 2.维基百科 ...
- 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理
题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...
- Acwing:通电围栏(皮克定理)
题目描述 农夫约翰的牧场可以看作是一个二维平面. 约翰为了方便看管他养的牛,构建了一个三角形的通电围栏. 他希望他的奶牛都在围栏围起的区域内活动. 三角形围栏的三个顶点位置坐标分别为 (0,0),(n ...
- POJ 1265-Area(计算几何+皮克定理+多边形面积公式)
题目地址:POJ 1265 题意:给定一个格点多边形,求出内部点数in,边上点数on,和面积S. 思路:运用的定理很多. 1.皮克定理:S=in+on/2-1,即in=(2*S+2-on)/2. 2. ...
- NOJ 1434 Fence (皮克定理)
Fence 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:59 测试通过:23 题目描述 In this pro ...
- Electric Fences_usaco3.4_皮克定理
Description 给定两个整点(m,n)(m,n)和(p,0)(p,0),与坐标原点(0,0)(0,0)构成三角形,求三角形内的整点数量 Analysis 找到这么一道神奇的题目以及神奇的定理 ...
- 三角形的内点(皮克定理)
题目: 在一个平面坐标系中,我们可以选出三个不全在一条线上的点构成一个三角形.我们称一个在三角形内(不包含三角形的边上),横纵坐标皆为整数的点位这个三角形的内点. 对于一个由(0,0).(n,m).( ...
最新文章
- 统计学和机器学习到底有什么区别?
- python *args 元组 **kargs 字典
- python pyOpenGL安装
- 【面试招聘】程序员面试完全指南
- 《DB2性能管理与实战》导读
- 分享一套阿里高级Java面试题,要去阿里的先过这些题。
- OSGi –带有服务的简单Hello World
- Web-HTML特殊符号的表示
- PTA 7-31 掉入陷阱的
- 创新大赛成就创业梦想 超30%入榜应用获投资意向
- 使用java压缩文件成zip——三种方式压缩文件速度对比
- blowfish java_blowfish加密算法
- 利用MATLAB画传递函数的奈奎斯特曲线
- 【VBS发邮件】乱码解决方法
- 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合
- 小米MIUI或其他手机黑暗深色模式部分控件失效无效
- Redis应用项目---抢红包功能(一)
- 【区块链基础】4——ETH区块结构
- 从信息传递的角度来看Android中的广播和Binder
- 无法创建新的分区,也找不到现有的分区