题意 :

求一个三角形中的 整数 点有多少个?

题接:

Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/page4.html&hl=zh-CN&ie=UTF8&sl=zh-TW&tl=zh-CN
多边形的面积 (在网格 图中):

pick 定理  s = b/2  + in  - 1  (b 表示 边上的点   in 表示 内部的点)

边上的点数 = gcd(|x1 - x2| ,|y1 - y2|);

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<set>
 7 #include<map>
 8 #include<queue>
 9 #include<vector>
10 #include<string>
11 #define Min(a,b) a<b?a:b
12 #define Max(a,b) a>b?a:b
13 #define CL(a,num) memset(a,num,sizeof(a));
14 #define maxn  110
15 #define eps  1e-6
16 #define inf 9999999
17 using namespace std;
18 struct point
19 {
20     int x;
21     int y;
22 }p[4];
23 int det(int x1,int y1,int x2,int y2)
24 {
25     return x1*y2 - x2*y1;
26 }
27 int cross(point a,point b,point c)
28 {
29     return det(b.x - a.x,b.y - a.y,c.x - a.x,c.y - a.y);
30 }
31 int gcd(int a,int b)
32 {
33     if(b == 0) return a;
34 
35     return gcd(b,a%b);
36 }
37 int main()
38 {
39     int x1,x2,x3,y1,y2,y3 ;
40     //freopen("data.in","r",stdin);
41     while(scanf("%d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3) == 6)
42     {
43         if(x1==0&&x2 == 0&&x3 == 0&&y1 == 0&&y2 ==0&&y3 ==0) break;//不知为什么 写在 scanf 后 就不对
44         p[1].x = x1;
45         p[1].y = y1;
46         p[2].x = x2;
47         p[2].y = y2;
48         p[3].x = x3;
49         p[3].y = y3;
50 
51         int s = cross(p[1],p[2],p[3]);
52         if(s < 0) s = -s ;
53         int num = 0;
54         int t1 = abs(p[1].x - p[2].x) ;
55         int t2 = abs(p[1].y - p[2].y);
56 
57         num +=gcd(t1,t2);
58 
59         t1 = abs(p[2].x - p[3].x);
60         t2 = abs(p[2].y - p[3].y);
61         num+=gcd(t1,t2);
62 
63         t1 = abs(p[3].x - p[1].x);
64         t2 = abs(p[3].y - p[1].y);
65         num+=gcd(t1,t2);
66         //printf("%lf  %d   ++++\n",s,num);
67        int  ans =  (s + 2 - num)/2;
68 
69         printf("%d\n",ans);
70 
71 
72 
73 
74     }
75 }

转载于:https://www.cnblogs.com/acSzz/archive/2012/08/25/2656947.html

poj 2954 Triangle (pick 定理 的应用 )相关推荐

  1. POJ 1265 Area(Pick定理)

    POJ 1265 Area(Pick定理) 根据pick定理来做 皮克定理是指一个计算点阵中顶点在格点上的多边形面积公式该公式可以表示为 2S=2a+b−2 其中a表示多边形内部的点数,b表示多边形边 ...

  2. poj 1265 Area(pick 定理)

    链接:poj 1265 题意:从原点出发.给出一些dx,dy移动增量,终于形成一个多边形, 求多边形内部的格点数目,边上的格点数目 .以及面积. 补充知识: 1.以格子点为顶点的线段.覆盖的点的个数为 ...

  3. pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积

    Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_ ...

  4. POJ 1265 pick 定理

    首先来脑补一下几个几何知识 非常奇妙的证明:图形必在格点之外 从cut-the-knot上看到的. 问题:     设想一个平面上布满间距为1的横纵直线,形成由一个个1×1正方形组成的网格.任意给一个 ...

  5. POJ1265(Pick定理的应用)

    题目:Area 先说说什么是Pick定理吧 Pick定理:设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 S=L/2 + N-1. 而对于线段上的整点数我 ...

  6. 整数点与Pick定理

    Pick 定理   设以整数点为顶点的多边形的面积为S,多边形内部的整数点数为N,多边形边界上的整数点数为L,则 N+1/2L-1=S. 对于N与L的计算由下面的程序给出: typedef struc ...

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

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

  8. 【总结】pick定理Farey序列

    pick定理及其证明 pick定理 结论 在一个平面直角坐标系内,以整点为顶点的简单多边形,设其内部整点数为aaa,边上(包括顶点)的整点数为bbb,则它的面积S=a+b2−1S = a+\frac ...

  9. POJ 2954-Triangle(计算几何+皮克定理)

    题目地址:POJ 2954 题意:给出三角形的三个顶点,求内部格点的个数. 思路:形同POJ 1265. #include <stdio.h> #include <math.h> ...

最新文章

  1. 酸爽!我用这套无人值守安装系统瞬间搞定上百台服务器
  2. 神了,无意中发现一位1500道的2021LeetCode算法刷题pdf笔记
  3. angular reactive form
  4. 和 VMware、深信服、天翼云、招商云专家一起聊聊云原生边缘计算
  5. Solr入门和实践以及我对Solr的8点理解
  6. java 接口的访问权限_证明接口interface中定义的方法的访问权限为public
  7. Doclava:来自Google的自定义Javadoc Doclet
  8. 【渝粤题库】广东开放大学 会展项目实践 形成性考核
  9. Azure Virtual Network, 虚拟网络
  10. Linux物理内存初始化
  11. Uva 10590 Boxes of Chocolates Again
  12. Mysql 查询列名
  13. 制作小游戏贪吃蛇即解决将python制作成exe
  14. ACL2016最佳论文:通过交互学习语言游戏
  15. 2021-04-23 Perl语言入门 导学
  16. 【流体力学】从无量纲化的NS方程看几个准则数:施特劳哈尔数、雷诺数、弗劳德数
  17. GitHup使用指南——安装及上传
  18. java 开三次根号_java里实现开根号
  19. 股票、债券、基金、期权、期货等的异同
  20. 字符串操作函数的实现【详解】

热门文章

  1. Perl模块使用 = 简短例子代码集合!
  2. 服务器CPU跑满了怎么办
  3. 腾讯要建超级大脑,用三张网实现AI in All万物互联
  4. .NET开源开发项目
  5. 50TB ExaDrive SSD投入商用,EB级容量闪存系统来日可期
  6. 小程序获取节点绑定数据data-index的方法
  7. python 取整法(进一取值)
  8. 天籁obd接口针脚定义_汽车OBD接口定义
  9. 各大汽车厂商的OBD协议
  10. Hadoop的完全分布式搭建