zoj 1377 Grandpa‘s Estate
Graham算法求凸包问题
#include <iostream>
#include<algorithm>
using namespace std;
const int maxn = 1001;
struct node {node () {};node (int _x, int _y): x(_x), y(_y) {};int x, y;node operator -(node nd) {return node(x - nd.x, y - nd.y);}int operator *(node nd) {return x * nd.y - y * nd.x;}} p[maxn], q[maxn];
int per[maxn], n, l;inline int dis(node p1, node p2) {return (p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y);
}inline bool cmp(int v1, int v2) {int det = (p[v1] - p[1]) * (p[v2] - p[1]);if (det != 0)return det > 0;return dis(p[1], p[v1]) < dis(p[1], p[v2]);
}void Graham() {int i, id, k;id = 1;for (i = 2; i <= n; i++) {if (p[i].x < p[id].x || (p[i].x == p[id].x && p[i].y < p[id].y))id = i;}if (id != 1)swap(p[1], p[id]);for (i = 1; i <= n; i++) {per[i] = i;}sort(per + 2, per + n + 1, cmp);l = 0;q[++l] = p[1];for (i = 2; i <= n; i++) {k = per[i];while (l >= 2 && (q[l] - q[l - 1]) * (p[k] - q[l - 1]) <= 0)l--;q[++l] = p[k];}
}bool judge() {if (l == 2)return 0;int sum;for (int i = 1; i <= l; i++) {sum = 0;for (int j = 1; j <= n; j++) {if ((p[j] - q[i]) * (q[i % l + 1] - p[j]) == 0)sum++;}if (sum < 3)return 0;}return 1;
}int main() {int t, i;scanf("%d", &t);while (t--) {scanf("%d", &n);for (i = 1; i <= n; i++) {scanf("%d%d", &p[i].x, &p[i].y);}Graham();if (judge())puts("YES");else puts("NO");}
}
zoj 1377 Grandpa‘s Estate相关推荐
- poj 1228 Grandpa's Estate
题目衔接:http://poj.org/problem?id=1228 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 168 ...
- Grandpa's Estate (凸包)
传送门 Being the only living descendant of his grandfather, Kamran the Believer inherited all of the gr ...
- POJ 1228 Grandpa's Estate --深入理解凸包
题意: 判断凸包是否稳定. 解法: 稳定凸包每条边上至少有三个点. 这题就在于求凸包的细节了,求凸包有两种算法: 1.基于水平序的Andrew算法 2.基于极角序的Graham算法 两种算法都有一个类 ...
- poj 1228 Grandpa's Estate 给定了一个凸包的部分顶点和边上的点,判断是否能唯一确定一个凸包...
题目来源: http://poj.org/problem?id=1228 题意:题目输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否唯一.所谓唯一就是判断能 ...
- POJ1228 Grandpa's Estate
题目: http://poj.org/problem?id=1228 题意: 给一堆点,是原凸包边上的点或内部的点(内部的点表明凸包被切割): 问能这些点能否唯一确定原来这个凸包 分析: 这是一个稳定 ...
- Grandpa's Estate POJ - 1228(凸包极角序改写)
看了题目意思之后感觉哇,简单的 一批不就是判断线段之间有没有至少一个点嘛,,,,,结果wa到自闭,, 这个题的点有首先要根据点构造凸包,因为题目给的数据不一定是一个凸包,其次,我们在构造凸包极角排序的 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- POJ 计算几何入门题目推荐
其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途(例如本人的专 ...
- 计算几何相关资料+题目推荐(不定期补充)
旋转卡壳:http://blog.csdn.net/accry/article/details/6070626 计算几何题目推荐:http://blog.csdn.net/accry/article/ ...
最新文章
- springboot配置ssl-pfx
- 云计算将为移动医疗带来哪些新机遇?
- 在村镇银行存款,银行先把利息全给了,这种存款安全吗?
- selector多路复用_多路复用器Selector
- 图书管理系统html_结自主可控数字化硕果,同方鼎欣推进基于OFD技术的数字档案管理系统研发...
- leetcode —— 面试题68 - I. 二叉搜索树的最近公共祖先
- mongodb mysql json数据类型_mongodb 数据格式补充
- java的随机数生成原理
- python mysqldb insert_python MySQLdb使用教程详解
- 【Caffe】利用log文件绘制loss和accuracy(转载)
- 华为机试HJ17:坐标移动
- 统计难题 HDU - 1251(字典树)
- WPF DataGrid使用 后台界面修改前台不刷新问题
- HashMap原理剖析
- JavaWeb学习笔记
- Boostnote:适合程序员的笔记软件
- 软件测试大牛成长计划
- Java并发包:ScheduledExecutorService
- 我的世界服务器怎么修改唱片,我的世界怎么修改唱片唱片音乐修改教程
- 人机协同变电站智能化发展,嵌入式为电网安全护航
热门文章
- python mongodb驱动 pymongo模块常见用法总结
- vCalendar文件格式解析
- 计算机与英语教学相结合,计算机与英语教学结合_英语论文.doc
- python字典、列表、元祖使用场景_(三)PYTHON字典 元祖 列表尝试应用
- python识字_“我女儿刚学会走路,我要在她识字后教她学Python吗?
- 计算机预测自己未来的相貌,新软件30秒预测未来样貌 完全可以以假乱真
- 普元元数据产品如何安装到普元应用服务器AppServer上
- android 如何制作可编辑的表格,在手机wps中编辑表格的方法
- 报错:Property or method “item“ is not defined on the instance but referenced during render.
- 计算机一会儿黑屏,电脑一会黑屏一会亮怎么处理?