poj1228稳定凸包
就是给一系列点,看这是不是一个稳定凸包
稳定凸包是指一个凸包不能通过加点来使它扩大面积,也就是说每条边最少有三个点
判断的地方写错了,写了两边循环,其实数组s已经排好了序,直接每三个判断就好了
- #include<map>
- #include<set>
- #include<cmath>
- #include<queue>
- #include<stack>
- #include<vector>
- #include<cstdio>
- #include<cassert>
- #include<iomanip>
- #include<cstdlib>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define pi acos(-1.0)
- #define ll long long
- #define mod 1000000007
- #define ls l,m,rt<<1
- #define rs m+1,r,rt<<1|1
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- using namespace std;
- const double g=10.0,eps=1e-;
- const int N=+,maxn=+,inf=0x3f3f3f;
- struct point{
- double x,y;
- };
- point p[N],s[N];
- int n;
- double dir(point p1,point p2,point p3)
- {
- return (p3.x-p1.x)*(p2.y-p1.y)-(p3.y-p1.y)*(p2.x-p1.x);
- }
- double dis(point p1,point p2)
- {
- return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
- }
- bool comp(point p1,point p2)
- {
- double te=dir(p[],p1,p2);
- if(te<)return ;
- if(te==&&dis(p[],p1)<dis(p[],p2))return ;
- return ;
- }
- bool graham()
- {
- int pos;
- double minx,miny;
- minx=miny=inf;
- for(int i=;i<n;i++)
- {
- if(p[i].y<miny||(p[i].y==miny&&p[i].x<minx))
- {
- minx=p[i].x;
- miny=p[i].y;
- pos=i;
- }
- }
- swap(p[],p[pos]);
- sort(p+,p+n,comp);
- int top=;
- p[n]=p[];
- s[]=p[],s[]=p[],s[]=p[];
- for(int i=;i<=n;i++)
- {
- while(top>=&&dir(s[top-],s[top],p[i])>)top--;
- s[++top]=p[i];
- }
- /* cout<<endl;
- for(int i=0;i<n;i++)
- cout<<p[i].x<<" "<<p[i].y<<endl;
- cout<<endl;
- for(int i=0;i<top;i++)
- cout<<s[i].x<<" "<<s[i].y<<endl;*/
- for(int i=;i<top-;i++)
- {
- if(dir(s[i-],s[i],s[i+])!=&&dir(s[i],s[i+],s[i+])!=)
- return ;
- }
- return ;
- }
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie();
- int t;
- cin>>t;
- while(t--){
- cin>>n;
- for(int i=;i<n;i++)
- cin>>p[i].x>>p[i].y;
- if(n<)
- {
- cout<<"NO"<<endl;
- continue;
- }
- if(graham())cout<<"YES"<<endl;
- else cout<<"NO"<<endl;
- }
- return ;
- }
- /*
- 1
- 4
- 0 1
- 0 2
- 0 3
- 0 4
- */
poj1228稳定凸包的更多相关文章
- POJ1228(稳定凸包问题)
题目:Grandpa's Estate 题意:输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否稳定.所谓稳 定就是判断能不能在原有凸包上加点,得到一个更 ...
- POJ1228 Grandpa's Estate 稳定凸包
POJ1228 转自http://www.cnblogs.com/xdruid/archive/2012/06/20/2555536.html 这道题算是很好的一道凸包的题吧,做完后会加深对凸包的 ...
- POJ 1228 - Grandpa's Estate 稳定凸包
稳定凸包问题 要求每条边上至少有三个点,且对凸包上点数为1,2时要特判 巨坑无比,调了很长时间= = //POJ 1228 //稳定凸包问题,等价于每条边上至少有三个点,但对m = 1(点)和m = ...
- Grandpa's Estate - POJ 1228(稳定凸包)
刚开始看这个题目不知道是什么东东,后面看了大神的题解才知道是稳定凸包问题,什么是稳定凸包呢?所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点.知道了这个东 ...
- poj 1228 稳定凸包
Grandpa's Estate Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12337 Accepted: 3451 ...
- POJ 1228 (稳定凸包问题)
<题目链接> <转载于 >>> > 首先来了解什么是稳定的凸包.比如有4个点: 这四个点是某个凸包上的部分点,他们连起来后确实还是一个凸包.但是原始的凸包可 ...
- poj1228(稳定凸包+特判最后一条边)
题目链接:https://vjudge.net/problem/POJ-1228 题意:我是真的没看懂题意QAQ...搜了才知道.题目给了n个点,问这n个点确定的凸包是否能通过添加点来变成一个新的凸包 ...
- POJ1228+凸包
见代码. /* 凸包(稳定凸包) 题意:给出一些点,这些点要么是凸包的顶点要么是边上的. 证明每条边上都至少有3个点. */ #include<stdio.h> #include<s ...
- POJ 1228 Grandpa's Estate --深入理解凸包
题意: 判断凸包是否稳定. 解法: 稳定凸包每条边上至少有三个点. 这题就在于求凸包的细节了,求凸包有两种算法: 1.基于水平序的Andrew算法 2.基于极角序的Graham算法 两种算法都有一个类 ...
随机推荐
- w命令
命 令:w 功能说明:显示目前登入系统的用户信息. 语 法:w [-fhlsuV][用户名称] 补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序.单独执行w 指令会显示所 ...
- python subplot 合并子图的方法
- PEP8编码规范
1.代码布局设计 1.1 缩进 -4个空格进行缩进 1.2 tab键-在python2中tab和空格是混用的,但是在python中基本上使用tab(pycharm开发工具会自动对代码缩进) 1.3 最 ...
- web前端攻城狮整理的收藏夹
作为一名web前端开发工程师你的收藏夹存对了吗?下面是一份互联网上流传甚广的web前端开发收藏夹资源,包含学习网站.JS库.常用工具.常用插件.资讯书籍等资源.速速转存吧~ 一.学习网站 W3 ...
- Salesforce中通过SOAP API和Metadata API开发java的web server服务
1.下载Salesforce平台中WSDL文件 在Salesforce中创建了自己需要用到的对象后,我们想要在别的应用中读写纪录到对象中,首先需要的是自己Salesforce平台的权限通过.登陆自己的 ...
- deeplenrnig学习笔记——什么是特征
特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的.如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度. 一.特征的表示粒度: 学习算法在一个什么粒度上的特征表示,才有能发挥作用 ...
- js实现excel的解析
在浏览网页的时候不小心看到了这个github的资源(https://github.com/SheetJS/js-xlsx),真不错.之前在开发的时候曾遇到客户要求在前端解析excel并展示出来.这里记 ...
- 在安装好MySql后忘记root的密码,或者给root添加密码
一.编辑MySql的配置文件:my.ini(在MySql安装目录下). 打开配置文件,在文件最后一行添加:skip-grant-tables,然后保存退出. 意思为就是在启mysql时不启动grant ...
- Django学习笔记之利用Form和Ajax实现注册功能
一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2 ...
- spring项目gitignore
target/ ### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans ### Intel ...