题目大意:以原点为起点然后每次增加一个x,y的值,求出来最后在多边形边上的点有多少个,内部的点有多少个,多边形的面积是多少。

分析:

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

代码如下:

-------------------------------------------------------------------------------------------------------------

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std; const int MAXN = 1e4+;
const double EPS = 1e-; int GCD(int m, int n)
{
if(!m || !n)
return m+n;
return GCD(n, m%n);
} int main()
{
int T, t=; scanf("%d", &T); while(T--)
{
int N, x, y, nx=, ny=, cnt=, area=; scanf("%d", &N); for(int i=; i<N; i++)
{
scanf("%d%d", &x, &y); cnt += GCD(abs(x), abs(y));
x += nx, y += ny;
area += (x*ny - y*nx);
nx = x, ny = y;
}
if(area < )area = -area;
printf("Scenario #%d:\n", t++);
printf("%d %d %.1f\n\n", (area-cnt)/+, cnt, area/2.0);
} return ;
}

最新文章

  1. ExtJs服务器端代理(Ajax)
  2. Dom 概览
  3. Effective Objective-C 2.0 学习记录
  4. Mac Jenkins 权限问题
  5. php实现在线下载程序安装包功能
  6. 安装Laravel遇到You must enable the openssl extension to download files via https问题
  7. 长沙Uber优步司机奖励政策(2月1日~2月7日)
  8. 哈希表(散列)HashTable实现
  9. jQuery学习之旅 Item5 $与jQuery对象
  10. Linux LVM学习总结&mdash;&mdash;Insufficient Free Extents for a Logical Volume
  11. Java 面试题集锦
  12. 使用Eclipse进行Makefile项目
  13. Oracle 重启数据库实例
  14. git默认忽略文件的大小写
  15. C# 2个List&lt;T&gt;比较内部项是否相等(全部相等则相等,反之不相等)
  16. 仿微博的JQuery日历控件
  17. 解决fonts.googleapis.com不能访问,导致网页打不开
  18. 如何确定selenium ID元素是否查找正确
  19. free word online
  20. Python面向对象高级

热门文章

  1. 【转】关于oracle with as用法
  2. HTML5学习笔记----html5与传统html区别
  3. mongodb 非 admin 库 认证登陆失败 原因(百度好多都 是渣)db.addUser() 请走开。
  4. JavaScript中将JSON的字符串解析成JSON数据格式
  5. PHPExcel1
  6. #Leet Code# Evaluate Reverse Polish Notation
  7. css 浮动 相对定位 绝对定位区别
  8. android中LayoutInflater详解与使用
  9. 这是从word发的第一篇博客。
  10. Waterfall———瀑布流布局插件, 类似于 Pinterest、花瓣、发现啦。