USACO5.1凸包参考代码
来源:互联网 发布:知乎 宋慈 编辑:程序博客网 时间:2024/05/01 13:56
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int maxn=10000+5;struct node{double x,y;}a[maxn];int stack[maxn],top;bool cmp(node p,node q){return p.x<q.x;}double dist(int u,int v){return sqrt((a[u].x-a[v].x)*(a[u].x-a[v].x)+(a[u].y-a[v].y)*(a[u].y-a[v].y));}bool pd(int u,int v,int w){return (a[u].y-a[v].y)*(a[v].x-a[w].x)>(a[v].y-a[w].y)*(a[u].x-a[v].x);}int main(){int i,j,k,m,n;cin>>n;for(i=1;i<=n;i++)cin>>a[i].x>>a[i].y;sort(a+1,a+n+1,cmp);top=2;stack[1]=1;stack[2]=2;for(i=3;i<=n;i++){while(top>1 && !pd(i,stack[top],stack[top-1]))top--;stack[++top]=i;}double ans=0;for(i=1;i<top;i++)ans+=dist(stack[i],stack[i+1]);top=2;stack[1]=1;stack[2]=2;for(i=3;i<=n;i++){while(top>1 && pd(i,stack[top],stack[top-1]))top--;stack[++top]=i;}for(i=1;i<top;i++)ans+=dist(stack[i],stack[i+1]);printf("%.2lf\n",ans);return 0;}
3 0
- USACO5.1凸包参考代码
- 凸包——Luogu2742 [USACO5.1]圈奶牛Fencing the Cows
- [USACO5.1]圈奶牛Fencing the Cows(凸包模板)
- [USACO5.1]Starry Night
- USACO 5.1.1 凸包参考程序
- USACO 5.1.1 凸包参考程序
- [USACO5.1]Fencing the Cows
- PHP参考代码1
- 雨刷程序参考代码1
- 代码参考
- 代码参考
- 剑指Offer--编程题参考代码(1)
- P2742 [USACO5.1]圈奶牛Fencing the Cows
- 洛谷 P2749 [USACO5.1]夜空繁星Starry Night
- [luogu2742]:[USACO5.1]圈奶牛Fencing the Cows
- 创建maven web项目pom.xml参考代码--mvn命令打war包
- 图片上传代码参考。
- WebCasr邮件代码参考
- QT5 一个问题
- reboot与shutdown -r now 区别与联系
- 【matlab】 隐函数作图函数 ezplot
- ios 自定义0.5的线条UIView
- IOS开发入门(11)-导航控制器(1)
- USACO5.1凸包参考代码
- tcpdump抓包
- HTML5——框架
- QT做的推箱子游戏
- Hibernate同名不同包下的映射文件同时加载问题
- 广度优先搜索——填涂颜色
- lnmp nginx 开启pathinfo
- VR系列——Oculus Audio sdk文档:九、发布说明——Audio SDK 0.11/0.10发布说明
- JDBC中Connection解惑