题目大意:

给一个平面上的简单多边形,求边上的点,多边形内的点,多边形面积。

解题思路:
这个题用了很多知识点:

1、以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其中,dxdy分别为线段横向占的点数和纵向占的点数。如果dx或dy为0,则覆盖的点数为dy或dx。
2、Pick公式:平面上以格子点为顶点的简单多边形的面积=边上的点数/2+内部的点数+1。
3、任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和。


只要知道了这些,代码很好写,注意细节就行了。


下面是代码:

#include <stdio.h>
struct node
{int x,y;
} point[110];
int n;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
int Area(node a,node b)
{return a.x*b.y-a.y*b.x;
}
int main()
{int T,case1=0;scanf("%d",&T);while(T--){case1++;int a=0,p=0,dx,dy,i;scanf("%d",&n);point[0].x=0;point[0].y=0;for(i=1; i<=n; i++){scanf("%d%d",&point[i].x,&point[i].y);dx=point[i].x;if(dx<0)dx=-dx;dy=point[i].y;if(dy<0)dy=-dy;p+=gcd(dx,dy);point[i].x+=point[i-1].x;point[i].y+=point[i-1].y;a+=Area(point[i],point[i-1]);}if(a<0)a=-a;printf("Scenario #%d:\n",case1);printf("%d %d %.1f\n\n",(a-p+2)/2,p,0.5*a);}return 0;
}

POJ 1265 Area相关推荐

  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. poj 1654 Area 多边形面积

    /* poj 1654 Area 多边形面积题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> # ...

  4. pku 1265 Area

    http://poj.org/problem?id=1265 求多面形面积加pick 公式 设F为平面上以格子点为定点的单纯多边形,则其面积为: S=b/2+i-1. b为多边形边上点格点的个数,i为 ...

  5. 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_ ...

  6. poj 1654 Area

    #include<iostream> //多边形面积#include<string>using namespace std;struct point{int x,y;}p[10 ...

  7. POJ 1389 Area of Simple Polygons(扫描线求面积)

    思路:纯纯扫描线求面积模板题,求点赞qaq. #include<iostream> #include<cstdio> #include<cstring> #incl ...

  8. POJ 1265 pick 定理

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

  9. POJ 1654 Area 凸包面积

    水题直接码... /********************* Template ************************/ #include <set> #include < ...

最新文章

  1. 盘点:2020年最酷的12家机器学习初创公司
  2. 【博客搬家旧文】leetcode 771. Jewels and Stones
  3. struct ethhdr结构体详解
  4. X-AdminABP框架开发-系统日志
  5. 如何快速开发一个 Dubbo 应用
  6. 迁移学习 简而言之_简而言之Java.io:22个案例研究
  7. [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
  8. 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
  9. php mysql旅游管理系统毕业设计网站作品
  10. 关于NSOperation的几个常见问题
  11. springcloud生产环境一般怎么部署_生产环境遇到这些ogg报错该怎么处理?
  12. take android,Protake
  13. 区别大盘点:信息学竞赛、信息学奥赛、NOIP、NOI和IOI傻傻分不清楚
  14. 数学建模三十六计——线性模型
  15. hp台式计算机怎么进bois,HP笔记本怎么进BIOS?惠普电脑进入BIOS方法
  16. java设计模式(1)
  17. php下载MP4视频
  18. 从《长安十二时辰》看车联网
  19. linux静态路由表无故消失,探究几种静态路由的行为及自动删除行为
  20. 编一程序,从键盘输入圆的半径,计算并输出圆的正内接六边形的面积和占圆面积百分比

热门文章

  1. pom文件分析(笔记)
  2. 学习ARM开发01-09
  3. 【阅读笔记】Gradient Harmonized Single-stage Detector
  4. error link1158 无法运行rc.exe
  5. PHP脚本定时任务实现及crontab实现定时任务
  6. 工作流-jbpm入门例子
  7. jq将数据库数据显示在select标签上
  8. MacBook 电池管家—— AlDente Pro 使用体验
  9. Windows API一日一练(29)SelectObject和DeleteObject函数
  10. Windows API一日一练 29 SelectObject和DeleteObject函数