CodeForces 772B Volatile Kite
来源:互联网 发布:python面试常问问题 编辑:程序博客网 时间:2024/05/29 03:20
题目链接:http://codeforces.com/problemset/problem/772/B
题意:给你一个凸n多边形,如果任意点移动d的距离会使得这个凸n多边形不再是凸n多边形,让你求这个距离d的最小值
解析:如果一个点移动一段距离以后,这个多边形就不再是凸n多边形的话,只有可能这个点和旁边的两个点形成了一条直线,那么这个d就是这个点到旁边两个点形成的直线的最短距离,可是其他点也可以移动,那么就相当于这三个点都往中间靠,所以ans = min(点到直线的距离/2.0)
#include <bits/stdc++.h>using namespace std;const int inf = 0x7fffffff;const double eps = 1e-6;const int maxn = 1e5+100;struct point{ double x,y; point() {} point(double _x,double _y) { x = _x; y = _y; }}a[maxn];double x_mul(point p0,point p1,point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}double dis(point p1,point p2){ return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}int main(void){ int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%lf %lf",&a[i].x,&a[i].y); double ans = inf; for(int i=0;i<n;i++) { double area = fabs(x_mul(a[(i+1)%n],a[i],a[(i+2)%n]))/2.0; double d = dis(a[i],a[(i+2)%n]); ans = min(ans,area/d); } printf("%.6f\n",ans); return 0;}
0 0
- CodeForces 772B Volatile Kite
- codeforces Volatile Kite(几何)
- Codeforces 801D Volatile Kite 几何
- Codeforces Round #409 D. Volatile Kite (几何)
- codeforces Volatile Kite (向量的操作模板)
- Codeforces Round #409 D. Volatile Kite (几何)
- Codeforces Round #409 D. Volatile Kite (几何)
- Codeforces801D Volatile Kite
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) D. Volatile Kite
- Codeforces Round #409Div.2D. Volatile Kite(计算几何)
- Codeforces Round #409 (Div. 2) D. Volatile Kite 计算几何、凸多边形、线段类
- VK Cup 2017 B. Volatile Kite (Div . 1)(凸多边形退化)(计算几何)
- asm volatile ("B .")
- codeforces B
- codeforces B
- codeforces B
- codeforces B
- [几何] Codeforces 772B VK Cup 2017
- centos6安装mysql5.6
- MyBatis之Hello world(Mybatis入门)
- 2013中秋大同三日游
- EasyUI之Hello world(EasyUI的入门学习)
- java 有问必答
- CodeForces 772B Volatile Kite
- 生活碎碎念
- 获取本机IP地址
- oracle查询正在执行的sql
- 如何进入BIOS?电脑BIOS中USB模式启动热键
- Sip之imsdroid
- Linux对系统时间的操作
- rapidjson 使用
- 我已率先抢占昵称,我的昵称独一无…