POJ 1113 Wall (凸包求周长)
来源:互联网 发布:豹风网络 编辑:程序博客网 时间:2024/05/17 04:51
大意:给定些点,组成多边形,问有没有圆把多边形围起来并且圆距离多边形最小的距离是m;求多边形的边长。
思路:首先要知道怎么求外边圆的周长,L圆=L(半径为m的圆)+凸包外接圆半径。
至于为什么要加上小圆半径因为所有的小圆的一部分角度加和一定为360。
#include<map>#include<queue>#include<cmath>#include<cstdio>#include<stack>#include<iostream>#include<cstring>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define eps 1e-8#define ls l,mid,rt<<1#define rs mid+1,r,rt<<1|1const double PI=acos(-1.0);using namespace std;struct node{ int x,y;}q[1010],vex[1010];int n,cnt;double dis(node a,node b){ return sqrt((double)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}bool cmp(node a,node b){ if(a.x==b.x) return a.y < b.y; else return a.x < b.x;}int cro(node a,node b,node c){///叉积 return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);}void Gramham(){ sort(q,n+q,cmp); vex[0] = q[0]; vex[1] = q[1]; cnt = 2; for(int i = 2; i< n;++ i){///上凸包 while(cnt > 1&&cro(vex[cnt-1],q[i],vex[cnt-2]) <= 0 ) cnt--; vex[cnt++] = q[i]; } int k = cnt; for(int i = n-2;i >= 0;--i){///下凸包 while(cnt > k&&cro(vex[cnt-1],q[i],vex[cnt-2]) <= 0 ) cnt--; vex[cnt++] = q[i]; }}int main(){ int m,i; while(~scanf("%d%d",&n,&m)){ for(i = 0;i < n;++ i){ scanf("%d%d",&q[i].x,&q[i].y); } Gramham(); double ans = 0; for(i = 0;i < cnt-1;++ i){ ans += dis(vex[i],vex[i+1]); } ans += 2*PI*m; printf("%.0f\n",ans); } return 0;}
0 0
- POJ 1113 Wall 凸包求周长
- POJ 1113 Wall (凸包求周长)
- POJ 1113 Wall (凸包求周长)
- poj 1113 Wall(凸包周长)
- 【解题报告】 POJ 1113 Wall -- 求凸包周长
- POJ 1113 Wall【凸包周长】
- POJ 1113 Wall (凸包周长)
- POJ 1113 Wall(凸包周长)
- POJ 1113 Wall(凸包 多边形周长)
- POJ 1113 Wall(凸包周长)
- POJ 1113 Wall(求凸包周长)
- POJ--1113[Wall] 凸包周长+圆的周长
- POJ 1113 Wall (凸包+求周长)
- nyoj 226 && hdu HDU 1348 && poj 1113 wall [凸包周长]
- POJ 1113 && HDU 1348 Wall (凸包周长 graham扫描法)
- poj 1113 Wall 【求包围所有点、且与所有点距离至少为L的曲线的最小周长】
- POJ 1113 WALL
- POJ 1113 Wall
- 合同的重要性
- C++ assert()的使用方法
- Android Studio NDK基础使用
- Android 不显示标题栏和全屏的设置方法(转载)
- 三角形周长和面积
- POJ 1113 Wall (凸包求周长)
- 关于xcode——取得委托对象的实例
- Spring中的设计模式
- error LNK2001: unresolved external symbol "private: static
- Android Canvas以及Android自定义View初步
- Atitit. Toast alert loading js控件 atiToast v2新特性
- Android XML实现按下弹起获得焦点 调用不同图片
- 解决网站中上传的图片在IE中不显示 chrome firefox下却正常
- 没有桌面与 KB3138602