计算几何,直觉。

凭直觉猜的做法,把每条线段的中点连起来,每个点到对应内部线段的距离,取个最小值。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <string>
  6. #include <queue>
  7. #include <stack>
  8. #include <vector>
  9. #include <algorithm>
  10. using namespace std;
  11.  
  12. #define eps 1e-8
  13. #define zero(x)(((x)>0?(x):-(x))<eps)
  14.  
  15. int T,n;
  16.  
  17. struct point
  18. {
  19. double x,y;
  20. };
  21.  
  22. double xmult(point p1,point p2,point p0)
  23. {
  24. return(p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
  25. }
  26.  
  27. double distance(point p1,point p2)
  28. {
  29. return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
  30. }
  31.  
  32. point intersection(point u1,point u2,point v1,point v2)
  33. {
  34. point ret=u1;
  35. double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
  36. /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
  37. ret.x+=(u2.x-u1.x)*t;
  38. ret.y+=(u2.y-u1.y)*t;
  39. return ret;
  40. }
  41.  
  42. point ptoseg(point p,point l1,point l2)
  43. {
  44. point t=p; t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
  45. if(xmult(l1,t,p)*xmult(l2,t,p)>eps)
  46. return distance(p,l1)<distance(p,l2)?l1:l2;
  47. return intersection(p,t,l1,l2);
  48. }
  49.  
  50. point p[];
  51.  
  52. int main()
  53. {
  54.  
  55. scanf("%d",&n);
  56. for(int i=;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
  57.  
  58. double ans = 99999999999999.0;
  59. for(int i=;i<=n;i++)
  60. {
  61. int A = i-;
  62. int B = i;
  63. int C = i+;
  64.  
  65. if(i-==) A=n;
  66. if(i+==n+) C=;
  67.  
  68. point a,b;
  69.  
  70. a.x = (p[A].x+p[B].x)/;
  71. a.y = (p[A].y+p[B].y)/;
  72.  
  73. b.x = (p[C].x+p[B].x)/;
  74. b.y = (p[C].y+p[B].y)/;
  75.  
  76. point c = ptoseg(p[B],a,b);
  77. ans = min(ans,distance(p[B],c));
  78.  
  79. }
  80.  
  81. printf("%f\n",ans);
  82.  
  83. return ;
  84. }

CodeForces 772B Volatile Kite的更多相关文章

  1. CodeForces 800B Volatile Kite(点与直线的距离)(Java 实现)

    CodeForces 800B Volatile Kite(点与直线的距离)(Java 实现) 传送门 如果想要一个凸多边形不退化为凹多边形,那么任意的相邻的三个点必然最多形成一条直线.因此我们可以求 ...

  2. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) D. Volatile Kite

    地址:http://codeforces.com/contest/801/problem/D 题目: D. Volatile Kite time limit per test 2 seconds me ...

  3. Codeforces801D Volatile Kite 2017-04-19 00:30 122人阅读 评论(0) 收藏

    D. Volatile Kite time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  4. 【codeforces 801D】Volatile Kite

    [题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何 ...

  5. codeforces 801 D. Volatile Kite(数学题)

    题目链接:http://codeforces.com/contest/801/problem/D 题意:求出一个最大值D,使得一个给定的凸多边形任意点移动范围在半径为D的圆中,都不会构成一个凹都边形. ...

  6. Codeforces Round#409/VK-Cup 2017 Round2

    来自FallDream的博客,未经允许,请勿转载,谢谢. 和ditoly组队打VK-Cup,起了个名字叫Vegetable Chicken(意思显然),然后昨天我做AB他切C 很不幸的是.....我写 ...

  7. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) 题解【ABCDE】

    A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后c ...

  8. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) A B C D 暴力 水 二分 几何

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. VK Cup 2017 - Round 2

    FallDream打的AB都FFT了,只剩一个我打的C,没进前一百,之后看看马拉松复活赛有没机会呗. A. Voltage Keepsake 题目大意:n个东西,每个东西一开始有bi能源,每秒消耗ai ...

随机推荐

  1. mysql \G

    mysql 命令区分大小写.ego       (\G) Send command to mysql server, display result vertically. go        (\g) ...

  2. 谷歌地图 API 开发之添加标记(解析以及补充)

    今天又看了下官网,发现官网上有地图标记的详细说明.当时居然眼瞎看不见,还琢磨了好久...#$%^&,一定是项目太急,没看到(^o^)/~地址:https://developers.google ...

  3. ZOJ 3778 C - Talented Chef 水题

    LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778 题意:有n道菜,每道菜需要\(a_i\)道工序,有m个锅可 ...

  4. ⑥ 设计模式的艺术-06.建造者(Builder)模式

    场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,也非常复杂,有很多 ...

  5. 前端开发必知必会:CSS Position 全解析

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

  6. [php]修改站点的虚拟目录

    wamp默认的站点的目录是www的目录,可以修改appache的httpd.conf文件来修改目录,修改方法如下: 1. <Directory "D:/SoftWare/wamp/ww ...

  7. Vue 子路由 与 单页面多路由 的区别

    本文地址:http://www.cnblogs.com/veinyin/p/7911292.html 最近学完了基础课程,打算整理一波笔记,对基本概念梳理一遍,惊觉对子路由和单页面多路由混淆的一塌糊涂 ...

  8. windos下创建软链接,附Linux下创建软链接

    用过好多次老是忘记: 写在这里忘了就来看下 Windows下(win7) mklink /D D:\phpStudy\WWW\yii\school\teacher\web\uploads\public ...

  9. javaScript操作数组的常用方法

    map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元.ie都不支持 判断是否为数组 Array.is ...

  10. TensorFlow下利用MNIST训练模型识别手写数字

    本文将参考TensorFlow中文社区官方文档使用mnist数据集训练一个多层卷积神经网络(LeNet5网络),并利用所训练的模型识别自己手写数字. 训练MNIST数据集,并保存训练模型 # Pyth ...