[POJ2954&POJ1265]皮克定理的应用两例
皮克定理:
在一个多边形中。用I表示多边形内部的点数,E来表示多边形边上的点数,S表示多边形的面积。
满足:S:=I+E/2-1;
解决这一类题可能运用到的:
求E,一条边(x1,y1,x2,y2)上的点数(包括两个顶点)=gcd(abs(x1-x2),abs(y1-y2))+1;
求S:刚开始做POJ2954的时候莫名其妙一直WA,用了海伦公式求面积,后来又改用割补法,还是WA。发现面积还是用叉积算的好。
在八十中走廊里看过的书都忘光了啊...这么典型的叉积运用都会选择小学方法...不过至今没弄明白为什么海伦公式和割补法的误差那么大...
POJ2954
program poj2954;
var x1,y1,x2,y2,x3,y3,e:longint;
s:extended; function gcd(x,y:longint):longint;
begin
if y= then exit(x) else
exit(gcd(y,x mod y));
end; function calc_area(x1,y1,x2,y2,x3,y3:longint):extended;
begin
exit(abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/);
end; function solve(x1,y1,x2,y2:longint):longint;
begin
exit(gcd(abs(x1-x2),abs(y1-y2))+);
end; begin
//assign(input,'poj2954.in');reset(input);
//assign(output,'a.out');rewrite(output);
while not eof do
begin
readln(x1,y1,x2,y2,x3,y3);
if (x1=)and(y1=)and(x2=)and(y2=)and(x3=)and(y3=) then halt;
s:=calc_area(x1,y1,x2,y2,x3,y3);
e:=solve(x1,y1,x2,y2)+solve(x1,y1,x3,y3)+solve(x2,y2,x3,y3)-;
writeln(trunc(s-e/+));
end;
end.
POJ1265
program poj1265;
const maxn=;
type point=record x,y:longint;end;
var t,test,n,e,i,tx,ty:longint;
s:extended;
a:array[-..maxn]of point; function gcd(x,y:longint):longint;
begin
if y= then exit(x) else
exit(gcd(y,x mod y));
end; function cross(p0,p1,p2:point):double;
begin
exit((p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y));
end; begin
//assign(input,'poj1265.in');reset(input);
readln(test);
for t:= to test do
begin
readln(n);
a[].x:=;a[].y:=;
for i:= to n do
begin
readln(tx,ty);
a[i].x:=a[i-].x+tx;
a[i].y:=a[i-].y+ty;
end;
e:=;
for i:= to n- do inc(e,gcd(abs(a[i].x-a[i+].x),abs(a[i].y-a[i+].y)));
s:=;
for i:= to n do s:=s+cross(a[],a[i-],a[i])/;
s:=abs(s);
writeln('Scenario #',t,':');
writeln(trunc(s+-e/),' ',e,' ',s::);
writeln;
end;
end.
[POJ2954&POJ1265]皮克定理的应用两例的更多相关文章
- poj1265&&2954 [皮克定理 格点多边形]【学习笔记】
Q:皮克定理这种一句话的东西为什么还要写学习笔记啊? A:多好玩啊... PS:除了蓝色字体之外都是废话啊... Part I 1.顶点全在格点上的多边形叫做格点多边形(坐标全是整数) 2.维基百科 ...
- Area---poj1265(皮克定理+多边形求面积)
题目链接:http://poj.org/problem?id=1265 题意是:有一个机器人在矩形网格中行走,起始点是(0,0),每次移动(dx,dy)的偏移量,已知,机器人走的图形是一个多边形,求这 ...
- 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理
题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...
- USACO 3.4 Electric Fence 皮克定理
题意:在方格纸上画出一个三角形,求三角形里面包含的格点的数目 因为其中一条边就是X轴,一开始想的是算出两条边对应的数学函数,然后枚举x坐标值求解.但其实不用那么麻烦. 皮克定理:给定顶点坐标均是整点( ...
- Gym 101873G - Water Testing - [皮克定理]
题目链接:http://codeforces.com/gym/101873/problem/G 题意: 在点阵上,给出 $N$ 个点的坐标(全部都是在格点上),将它们按顺序连接可以构成一个多边形,求该 ...
- 【TOJ 5103】Electric Fence(皮克定理)
描述 In this problem, `lattice points' in the plane are points with integer coordinates. In order to c ...
- POJ 1265 /// 皮克定理+多边形边上整点数+多边形面积
题目大意: 默认从零点开始 给定n次x y上的移动距离 组成一个n边形(可能为凹多边形) 输出其 内部整点数 边上整点数 面积 皮克定理 多边形面积s = 其内部整点in + 其边上整点li / 2 ...
- Codeforces-GYM101873 G Water Testing 皮克定理
题意: 给定一个多边形,这个多边形的点都在格点上,问你这个多边形里面包含了几个格点. 题解: 对于格点多边形有一个非常有趣的定理: 多边形的面积S,内部的格点数a和边界上的格点数b,满足如下结论: 2 ...
- POJ 2954 /// 皮克定理+叉积求三角形面积
题目大意: 给定三角形的三点坐标 判断在其内部包含多少个整点 题解及讲解 皮克定理 多边形面积s = 其内部整点in + 其边上整点li / 2 - 1 那么求内部整点就是 in = s + 1 - ...
随机推荐
- XML与Object的范型转换
前段时间做object转换xml想了很多,所有打算整理下 做成以下的通用方法. public static bool ObjectToXml<T>(string filePath, T t ...
- 预装win8的笔记本如何重装win7
测试电脑联想T440. 开机按F1,然后Enter,进入Bios设置. 先关闭Secure Boot,然后设置为Legacy Boot. 之后才能设置U盘为第一启动盘. 进入老毛桃的PE系统,使用Di ...
- Linux 文件与目录管理命令
处理目录的常用命令 常见的处理目录的命令: ls: 列出目录 cd:切换目录 pwd:显示目前的目录 mkdir:创建一个新的目录,语法:mkdir [-mp] 目录名称 -m :配置文件的权限 -p ...
- HDFS常用文件操作
put 上传文件 hadoop fs -put wordcount.txt /data/wordcount/ text 查看文件内容 hadoop fs -text /output/wo ...
- [转载]压力测试工具siege的用法
压力测试工具siege 原文:http://blog.csdn.net/qingye2008/article/details/34500949 Siege是Linux下的一个web系统的压力测试工具, ...
- php处理三级分类数据
<?php // 链接数据库 $link = mysqli_connect('localhost','root','root'); if($link == null){ exit; } mysq ...
- Elicpse新建userLibrary导入jar包时抛出NotFoundException异常
最近刚开始学Struts2.0框架.再导入jar包的时候突然心血来潮.为方便区分jar包的功能,于是想在WEB-INF -> lib 目录下想新建一个struts文件夹,以方便分类查看. 像上图 ...
- lintcode-94-二叉树中的最大路径和
94-二叉树中的最大路径和 给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和) 样例 给出一棵二叉树: 返回 6 标签 动态规划 ...
- bootstrap和elementUI真的会冲突
前两天,做了一个支持markdown的功能: http://www.cnblogs.com/XHappyness/p/8097756.html 后面发现预览效果某些标签需要bootstrap的支持才能 ...
- JQuery事件对象的属性和方法
这是今天的总结,以后学习自己可以当参考书来读读.Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态.事件通常与函数结合使用,函数不会在事件发生前被执行 ...