poj 1654(计算几何)(差乘运用)
来源:互联网 发布:windows运行命令快捷键 编辑:程序博客网 时间:2024/05/23 21:53
任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出。
证明: http://www.cnblogs.com/vbspine/archive/2013/03/28/2987818.html
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<string>#include<cmath>using namespace std;typedef long long LL;const int N = 1000500;char direction[][2] = { -1,-1,0,-1,1,-1,-1,0,0,0,1,0,-1,1,0,1,1,1 };char dir[N];int polygon[N][2];//储存坐标int len;LL Area_Triangle(int k,int d){ return polygon[k][0] * polygon[d][1] - polygon[k][1] * polygon[d][0];}LL Area(){ LL s = 0; for (int i = 0; i < len - 1; i++) { s += Area_Triangle(i, i + 1); } s += Area_Triangle(len - 1, 0); if (s > 0) return s; else return -1*s;}int main(){ int t;#ifdef glx freopen("in.txt", "r", stdin);#endif scanf("%d", &t); while (t--) { scanf("%s", dir); len = strlen(dir); polygon[0][0] = 0; polygon[0][1] = 1; for (int i = 1; i < len; i++) { int num = dir[i-1] - '1'; polygon[i][0] = polygon[i - 1][0] + direction[num][0]; polygon[i][1] = polygon[i - 1][1] + direction[num][1]; } LL area = Area(); if (area % 2 == 0) printf("%I64d\n", area / 2); else printf("%I64d.5\n", area / 2); } return 0;}
1 0
- poj 1654(计算几何)(差乘运用)
- poj 2318(计算几何) 叉乘
- POJ 1654 Area 【叉乘+外积的几何意义】【计算几何】
- poj 2318 与 poj 2398计算几何 叉乘积运用
- 【计算几何】poj 1654 Area
- Area poj 1654 计算几何
- 计算几何--POJ--1654--Area
- POJ 3304 Segments [枚举+叉乘判断线段相交]【计算几何】
- 计算几何叉乘二分+博弈
- poj 1654 Area(计算几何)
- POJ 1654 Area(计算几何)
- POJ 1654 Area(计算几何)
- POJ 1654 Area 计算几何基础
- POJ 3304 计算几何
- POJ计算几何
- POJ 1106 计算几何
- POJ 1410 计算几何
- poj (1031) 计算几何
- Qml中ToolTip的创建
- [Leetcode] 278. First Bad Version
- Android内核开发:在源码树中添加新的app应用
- 第十一周项目3.1—警察和厨师
- DAG 动态规划 矩阵嵌套
- poj 1654(计算几何)(差乘运用)
- reponse对象JSP学习
- c++/c的文件读入和字符串读入总结
- 小小的面试
- hdu2870 Largest Submatrix(DP)
- 60. Permutation Sequence 【M】【12】
- Android SpannableString浅析
- 【GDOI 2016 Day2】第三题 机密网络
- Mysql学习笔记