[poj 1265]Area[Pick定理][三角剖分]
题意:
给出机器人移动的向量, 计算包围区域的内部整点, 边上整点, 面积.
思路:
面积是用三角剖分, 边上整点与GCD有关, 内部整点套用Pick定理.
S = I + E / 2 - 1
I 为内整点数, E为边界整点数, S为面积.
Separate the three numbers by two single blanks.....好吧, 理解成中间空两格PE一次> <
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN = 105;
int n;
int GCD(int a, int b)
{
return !b?a:GCD(b,a%b);
}
struct point
{
int x,y;
}p[MAXN];
int det(int i, int j)
{
return p[i].x*p[j].y - p[j].x*p[i].y;
}
double CalS()
{
double ret = 0;
for(int i=0;i<n;i++)
{
ret += det(i, i+1);
}
return fabs(ret/2.0);
}
int CalE()
{
int ans = n;
for(int i=0;i<n;i++)
{
int dx = (int)abs((double)(p[i].x - p[i+1].x));
int dy = (int)abs((double)(p[i].y - p[i+1].y));
if(!dx)
{
if(!dy) continue;
ans += dy - 1;
continue;
}
if(!dx)
{
ans += dx - 1;
continue;
}
ans += GCD(dx, dy) - 1;
}
return ans;
}
int main()
{
int T;
scanf("%d",&T);
for(int k=1;k<=T;k++)
{
scanf("%d",&n);
p[0].x = p[0].y = 0;
for(int i=1;i<=n;i++)
{
scanf("%d %d",&p[i].x,&p[i].y);
p[i].x += p[i-1].x, p[i].y += p[i-1].y;
}
double S = CalS();
int E = CalE();
printf("Scenario #%d:\n%d %d %.1lf\n\n",k,(int)(S+1.0-E/2.0),E,S);
}
}
[poj 1265]Area[Pick定理][三角剖分]的更多相关文章
- poj 1265 Area (Pick定理+求面积)
链接:http://poj.org/problem?id=1265 Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- POJ 1265 Area (Pick定理 & 多边形面积)
题目链接:POJ 1265 Problem Description Being well known for its highly innovative products, Merck would d ...
- poj 1265 Area(pick定理)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4373 Accepted: 1983 Description Bein ...
- poj 1265 Area( pick 定理 )
题目:http://poj.org/problem?id=1265 题意:已知机器人行走步数及每一步的坐标 变化量 ,求机器人所走路径围成的多边形的面积.多边形边上和内部的点的数量. 思路:1.以 ...
- Area - POJ 1265(pick定理求格点数+求多边形面积)
题目大意:以原点为起点然后每次增加一个x,y的值,求出来最后在多边形边上的点有多少个,内部的点有多少个,多边形的面积是多少. 分析: 1.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其 ...
- poj 1265 Area 面积+多边形内点数
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5861 Accepted: 2612 Description ...
- POJ 1265 Area POJ 2954 Triangle Pick定理
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5227 Accepted: 2342 Description ...
- poj 1265 Area(Pick定理)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5666 Accepted: 2533 Description ...
- POJ 1265 Area (pick定理)
题目大意:已知机器人行走步数及每一步的坐标变化量,求机器人所走路径围成的多边形的面积.多边形边上和内部的点的数量. 思路:叉积求面积,pick定理求点. pick定理:面积=内部点数+边上点数/2-1 ...
随机推荐
- winsock2获取网页
#define WIN32_LEAN_AND_MEAN#include <winsock2.h>#include <stdlib.h>#include <stdio.h& ...
- python--data type
1.Python中常见的数据类型有: 数据类型 内建函数 整型 int(),long() 浮点型 float() 字符串型 str() 列表 list() 元组 t ...
- Subsets 【dfs】
Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...
- Visual C++ 6.0编程环境的使用
1.1 编制并运行程序的四部曲 (1)编辑(把程序代码输入,交给计算机). (2)编译(成目标程序文件.obj).编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟 ...
- Maven Jrebel 多模块热部署方案
近期在构建maven多模块项目时,发现web module依赖的其它模块,每次都要clean install成一个jar包,然后运行web module才能加载. 本生jrebel是配置在了web m ...
- [对话CTO]当当网熊长青:兴趣是成为优秀工程师的第一因素-CSDN.NET
Women Techmaker 北京站 [对话CTO]当当网熊长青:兴趣是成为优秀工程师的第一因素-CSDN.NET [对话CTO]当当网熊长青:兴趣是成为优秀工程师的第一因素 发表于2 ...
- 第一种:NStread
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- Linux UDEV和为MySQL InnoDB共享表空间配置裸设备
⑴ UDEV 基础 udev 可管理保存在/dev 目录下的文件.文件只有在接入相应设备后才会生成.设备被拔出后自动删除 它还允许用户添加规则.以便修改/dev中默认的名称和权 ...
- Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...
- c/c++内存分配方式(转)
原文链接:http://blog.csdn.net/jing0611/article/details/4030237 1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配.内存在 程序编译 ...