POJ 3130 How I Mathematician Wonder What You Are! 半平面交
和POJ3335一样,只不过这题是逆时针
#include <iostream> #include <cstdio> #include <cmath> #define eps 1e-18 using namespace std;const int MAXN = 105; double a, b, c; int n, cnt;struct Point {double x, y; }point[MAXN], p[MAXN], tp[MAXN];void Get_equation(Point p1, Point p2) {a = p2.y - p1.y;b = p1.x - p2.x;c = p2.x * p1.y - p1.x * p2.y; }Point Intersection(Point p1, Point p2) {double u = fabs(a * p1.x + b * p1.y + c);double v = fabs(a * p2.x + b * p2.y + c);Point t;t.x = (p1.x * v + p2.x * u) / (u + v);t.y = (p1.y * v + p2.y * u) / (u + v);return t; }void Cut() {int tmp = 0;for(int i=1; i<=cnt; i++){//顺时针是>-eps和>eps,逆时针是<eps和<-epsif(a * p[i].x + b * p[i].y + c < eps) tp[++tmp] = p[i];else{if(a * p[i-1].x + b * p[i-1].y + c < -eps)tp[++tmp] = Intersection(p[i-1], p[i]);if(a * p[i+1].x + b * p[i+1].y + c < -eps)tp[++tmp] = Intersection(p[i], p[i+1]);}}for(int i=1; i<=tmp; i++)p[i] = tp[i];p[0] = p[tmp];p[tmp+1] = p[1];cnt = tmp; }void solve() {for(int i=1; i<=n; i++)p[i] = point[i];point[n+1] = point[1];p[0] = p[n];p[n+1] = p[1];cnt = n;for(int i=1; i<=n; i++){Get_equation(point[i], point[i+1]);Cut();} }int main() {while(~scanf("%d", &n) && n){for(int i=1; i<=n; i++)scanf("%lf%lf", &point[i].x, &point[i].y);solve();puts(cnt > 0? "1" : "0");}return 0; }
转载于:https://www.cnblogs.com/pach/p/7459307.html
POJ 3130 How I Mathematician Wonder What You Are! 半平面交相关推荐
- poj 3384 Feng Shui 半平面交
http://poj.org/problem?id=3384 给定一个多边形,在多边形内放有两个相同的圆,使两个圆尽可能多的覆盖多边形.输出最终两个圆心的位置. 最优的放置方法必定是圆内切于两条边,那 ...
- poj 3335 Rotating Scoreboard - 半平面交
/* poj 3335 Rotating Scoreboard - 半平面交点是顺时针给出的*/ #include <stdio.h> #include<math.h> con ...
- POJ 计算几何入门题目推荐
其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途(例如本人的专 ...
- [Z]POJ 计算几何入门题目推荐[转PKKJ]
http://www.cnblogs.com/eric-blog/archive/2011/05/31/2064785.html http://hi.baidu.com/novosbirsk/blog ...
- poj计算几何题推荐
POJ 计算几何入门题目推荐(转) 其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...
- poj 计算几何 分类
转自novosbirsk的空间,上面还有很多有用的东西. 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组 ...
- POJ 计算几何入门题目推荐(转)
POJ 计算几何入门题目推荐(转) 其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...
- [poj3130][半平面交]How I Mathematician Wonder What You Are!
传送门 http://poj.org/problem?id=3130 题意: 判断多边形的核是否存在 sol: 半平面交,满足所有半平面的区域显然就是核. #include<iostream&g ...
- POJ 3384 Feng Shui(半平面交)
题意 : 给你一个凸多边形,让你在其中找两个圆,使得圆的覆盖面积最大. 这个题目和 poj 3525 有点类似,那个题目是一个圆,想到两者的联系,可以发现两个圆覆盖面积最大就是重叠面积最小,怎样使得重 ...
最新文章
- php分布式redis实现session共享
- 我的第一个ASP类(显示止一篇下一篇文章)
- 【童年回忆】【FC模拟器 + ROM大合集下载】
- shell脚本监控系统负载、CPU和内存使用情况
- 开放下载!《AliOS Things快速开发指南》
- 记录 之 tensorflow常见的数据预处理操作
- kpu 处理器_首轮融资即估值过亿,中科驭数用全新专用计算架构让芯片也能“私人订制”...
- Storm的BaseBasicBolt源码解析ack机制
- 牛客网编程题03--明明的随机数
- android fragment 优势,Android Fragment详解
- web服务器php配置实例,配置 Web 服务器提供 PHP 服务
- 移动安全-java JEB安装使用
- sqlserver行列转换,动态行转换
- 广汽埃安发布新LOGO,推出全新高端品牌Hyper昊铂
- 花生采摘(peanuts)
- 美不胜“售”的花花世界
- UDS-统一诊断服务
- opencv surf特征点检测(二),API接口分析
- 复旦大学计算机科学技术学院期末,复旦大学计算机科学技术学院多媒体技术基础试题...
- 解读最佳实践:倚天710 ARM芯片的 Python+AI 算力优化