• poj 2954 Triangle Pick公式



    http://poj.org/problem?id=2954
    计算三角内部座标值为整数的点有多少个(不包括边上和顶点的点)。
    Pick公式的应用:Area=a/2+b-1;a为边界点,b为内部点。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<cstdio>
     4 #include<vector>
     5 #include<cmath>
     6 #include<algorithm>
     7 using namespace std;
     8 struct point
     9 {
    10     int x,y;
    11 }p[4];
    12 struct line
    13 {
    14     int a,b,c;
    15 }q[4];
    16 int num,ans;
    17 void lines(point p1,point p2)
    18 {
    19     int a,b,c;
    20     a=p2.y-p1.y;
    21     b=p1.x-p2.x;
    22     c=p2.x*p1.y-p2.y*p1.x;
    23     q[num].a=a;
    24     q[num].b=b;
    25     q[num++].c=c;
    26 }
    27 void solve(int t)
    28 {
    29     int i,y;
    30     int a,b;
    31     if(p[t].x==p[t+1].x)
    32     {
    33         ans+=abs(p[t].y-p[t+1].y)-1;
    34         return;
    35     }
    36     a=p[t].x;b=p[t+1].x;
    37     if(p[t].x>p[t+1].x)
    38     {
    39         a=p[t+1].x;b=p[t].x;
    40     }
    41     for(i=a+1;i<b;i++)
    42     {
    43         y=q[t].a*i+q[t].c;
    44         if(y%q[t].b==0)
    45         ans++;
    46     }
    47 }
    48 
    49 int main()
    50 {
    51     int i;
    52     int area;
    53     while(scanf("%d%d%d%d%d%d",&p[0].x,&p[0].y,&p[1].x,&p[1].y,&p[2].x,&p[2].y)!=EOF&&(p[0].x||p[0].y||p[1].x||p[1].y||p[2].x||p[2].y))
    54     {
    55         num=0;
    56         p[3]=p[0];
    57         area=0;
    58         for(i=0;i<3;i++)
    59         area+=p[i].x*p[i+1].y-p[i].y*p[i+1].x;
    60         area=abs(area);
    61         for(i=0;i<3;i++)
    62         lines(p[i],p[i+1]);
    63         ans=0;
    64         for(i=0;i<3;i++)
    65         solve(i);
    66         ans+=3;
    67         ans=(area-ans)/2+1;
    68         printf("%d\n",ans);
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    多色图标字体
    css编写规则BEM
    css处理工具PostCss
    vue2.0点击其他任何地方隐藏dom
    vue2.0多页面开发
    Dijkstra算法(邻接矩阵存储)
    kmp算法c++代码实现
    最小生成树(prim算法,Kruskal算法)c++实现
    字符串匹配的KMP算法(转)
    筛选法求素数
  • 原文地址:https://www.cnblogs.com/zxj015/p/2740207.html
Copyright © 2020-2023  润新知