zoukankan      html  css  js  c++  java
  • POJ 1265 Area (pick定理)

    题目大意:已知机器人行走步数及每一步的坐标变化量,求机器人所走路径围成的多边形的面积、多边形边上和内部的点的数量。

    思路:叉积求面积,pick定理求点。

    pick定理:面积=内部点数+边上点数/2-1。

    // Time 0ms; Memory 236K
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    
    using namespace std;
    
    struct point 
    {
    	int x,y;
    	point(int xx=0,int yy=0):x(xx),y(yy){}
    }a,b;
    int gcd(int x,int y)
    {
    	static int t;
    	for(;t=y;y=x%y,x=t);
    	return x;
    }
    int main()
    {
    	int i,j,t,m,p,q,A,I,E;
    	cin>>t;
    	for(i=0;i<t;i++)
    	{
    		A=E=0;
    		cin>>m;
    		for(j=0;j<m;j++)
    		{
    			cin>>p>>q;
    			a=b;
    			b=point(a.x+p,a.y+q);
    			A+=a.x*b.y-a.y*b.x;
    			E+=abs(gcd(a.x-b.x,a.y-b.y));
    		}
    		A=abs(A);
    		I=(A-E)/2+1; //pick定理
    		printf("Scenario #%d:
    ",i+1);
    		printf("%d %d %.1lf
    
    ",I,E,A*0.5);
    	}
    	return 0;
    }

  • 相关阅读:
    PHP入门
    bootstrap框架
    jsp5 include forward param
    jsp4 Cookie
    网页定位导航
    jsp3 javabean
    Obsidian md安装闪退
    Excel 2016 Mac VBA 的变化 窗体消失
    Excel Mac 2016 调用 Applescript
    如何自学R
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218169.html
Copyright © 2011-2022 走看看