NYOJ-78 圈水池,凸包裸模板!
圈水池
刚做完HDU1392,就看到这个题,嗯,原代码改改就过了。
题意不多说了,会凸包的话很简单,不会也不难,这道题时限是4s,数据100,会叉积的话三层循环遍历即可,两个点确定一条线段判断除这两个点外其他的点是否都在这条线段的一侧,是则这两个点都是凸包上的点。方法的话应该有很多,什么时候加强一下数据~~
struct node
{
int x,y;
}p[N],a[N];
int n,tot;
double dis(node a,node b)
{
return hypot(a.x-b.x,a.y-b.y);
}
int multi(node p0,node p1,node p2)
{
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
int cmp(node a,node b)
{
int x=multi(a,b,p[0]);
if(x>0||(x==0&&dis(a,p[0])<dis(b,p[0]))) return 1;
return 0;
}
int cmp1(node a,node b)
{
if(a.x!=b.x) return a.x<b.x;
return a.y<b.y;
}
void Graham()
{
int k=0;
for(int i=1;i<n;i++)
if(p[i].y<p[k].y||(p[i].y==p[k].y&&p[i].x<p[k].x)) k=i;
swap(p[0],p[k]);
sort(p+1,p+n,cmp);
tot=2,a[0]=p[0],a[1]=p[1];
for(int i=2;i<n;i++)
{
while(tot>1&&multi(p[i],a[tot-1],a[tot-2])>=0) tot--;
a[tot++]=p[i];
}
sort(a,a+tot,cmp1);
for(int i=0;i<tot;i++) printf("%d %d\n",a[i].x,a[i].y);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d%d",&p[i].x,&p[i].y);
Graham();
}
return 0;
}
0ms过了,目测后台较水。
NYOJ-78 圈水池,凸包裸模板!的更多相关文章
- NYOJ 78 圈水池 (入门级凸包)
题目链接:nyoj 78 单调链凸包小结 题目讲解:本题考查的主要是凸包的用法,算是入门级的吧,当然前提是你接触过,平面几何: AC代码: #include<iostream> #inc ...
- 题解报告:NYOJ #78 圈水池(打印凸包顶点)
描述: 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水,各个水池都标有各自的坐标,现在要你写一个程序利用最短的篱笆将这些供水装置圈起来!( ...
- nyoj 78:圈水池 【凸包入门】
题目链接 将所有点按从左至右顺序排序,然后将所有点先从左到右扫描再从右到左扫描,逐渐将凸包轮廓“勾勒”出来 (凸包轮廓满足,轮廓上连续的三个点按先后顺序给出的话呈逆时针方向) 最后删去一个重复的起(终 ...
- nyist 78 圈水池
http://acm.nyist.net/JudgeOnline/problem.php?pid=78 圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一个 ...
- 圈水池 nyoj 78 凸包算法
圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水, ...
- nyoj 78-圈水池 (凸包)
78-圈水池 内存限制:64MB 时间限制:3000ms 特判: No 通过数:5 提交数:6 难度:4 题目描述: 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来, ...
- nyoj_78:圈水池(凸包入门)
题目链接 将所有点按从左至右顺序排序,然后将所有点先从左到右扫描再从右到左扫描,逐渐将凸包轮廓"勾勒"出来 (凸包轮廓满足,轮廓上连续的三个点按先后顺序给出的话呈逆时针方向) 最后 ...
- NYOJ 圈水池
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...
- POJ 1873 - The Fortified Forest 凸包 + 搜索 模板
通过这道题发现了原来写凸包的一些不注意之处和一些错误..有些错误很要命.. 这题 N = 15 1 << 15 = 32768 直接枚举完全可行 卡在异常情况判断上很久,只有 顶点数 &g ...
随机推荐
- 关于RegExp的一些使用的练习(代码加注释)
<!DOCTYPE html> <html> <head> <title>title</title> <meta charset=&q ...
- Obj-C Memory Management
Memory management is one of the most important process in any programming language. It is the proces ...
- RSA不对称加密和公钥 私钥
理论上只要有加密的规则 基本都是可以解密的 但是如果解密需要消耗的时间过长 比如1000年 解密过后已经没什么意义了 此时可认为这种算法不能被破解 也就是说此加密可信 MD5 是一种单向操作 加密后不 ...
- UVA - 12264 Risk (二分,网络流)
题意比较坑,移动完以后的士兵不能再次移动,不然样例都过不了... 最小值最大满足决策单调性所以二分答案,跑网络流验证是否可行. 这种题重点在建图,为了保证只移动一次,拆点,一个入点一个出点,到了出点的 ...
- 讲课笔记3——CSS
背景常见样式: width:600px; height:800px; background: url(bg.jpg) no-repeat 40px 20px fixed gray ; * ...
- 数组初始化 和 vector初始化
] = {}; 整个数组都初始化为0 vector<); 整个vector初始化为1 如果你定义的vector是这样定义的: vector<int> B; 去初始化,千万不要用: ; ...
- 关于POST的请求的问题的汇总
1)404 解决方式:检查路径,路由问题 2)500 解决方式:1)首先检查代码 2)检查是否是参数未接收到 3)检查是否Content-Type类型导致的参数未收到 4)区分body-raw跟bod ...
- Ubuntu下Hyperledger Fabric v0.6安装部署
系统环境:虚拟机VMware Workstation中的Ubuntu 16.04LTS 1.环境准备 1.1安装Docker Docker安装命令: curl –fsSL https://get.do ...
- shell脚本,锁机制
[root@localhost wyb]# cat suijizhi.sh #!/bin/bash a=`|grep -v grep |wc -l` echo "$a" [ $a ...
- common-configuration的一些应用
此程序依赖commons-configuration-1.6.jar和commons-lang-2.6.jar两个jar包. 需要先在工程的src目录下建立如下几个文件: config.propert ...