zoukankan      html  css  js  c++  java
  • poj 1265 Area (pick定理+叉积求多边形面积)

    题目:http://poj.org/problem?id=1265

    pick定理: 多边形S面积 = 多边形内部点数 + 边上的点数/2 -1; 面积和边上的点数都为实数

    边界格点数---利用斜边对应的直角边的最大公约数
    多边形面积---利用叉积
    内部点数---利用pick定理求



    代码:
    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 int gcd (int a,int b)
     6 {
     7     if(b==0)
     8     return a;
     9     return gcd(b,a%b);
    10 }
    11 int area(int x1,int y1,int x2,int y2)
    12 {
    13     return x1*y2-x2*y1;
    14 }
    15 int main()
    16 {
    17     int t,n,i;
    18     int x,y;
    19     int k=0;
    20     scanf("%d",&t);
    21     while(t--)
    22     {
    23         scanf("%d",&n);
    24         k++;
    25         int edge=0;
    26         int in=0;
    27         int x1=0;
    28         int y1=0;
    29         int S=0;
    30         int x2,y2;
    31         for(i=0;i<n;i++)
    32         {
    33             scanf("%d%d",&x,&y);
    34             edge+=gcd(fabs(x),fabs(y));//边界格点数
    35             //cout<<gcd(fabs(x),fabs(y))<<endl;
    36             x2=x1+x;
    37             y2=y1+y;
    38             S+=area(x1,y1,x2,y2);//叉积求面积
    39             x1=x2;
    40             y1=y2;
    41         }
    42         in=S/2-edge/2+1;
    43         printf("Scenario #%d:\n%d %d %.1f\n\n",k,in,edge,S/2.0);
    44     }
    45     return 0;
    46 }
    
    
    
     
    
    
  • 相关阅读:
    Virtual Box的一些东西
    sun 的Virtual box
    Powerdesigner的vbscript
    MemoryStream的一些问题
    vs2008 三大形象代言人
    ASP.NET学习之匿名方法
    asp.net2.0学习历程 菜鸟到中级程序员的飞跃
    ASP.NET程序员必看书
    设计模式学习扎马步
    MDI窗体改变背景
  • 原文地址:https://www.cnblogs.com/wanglin2011/p/2931692.html
Copyright © 2011-2022 走看看