zoukankan      html  css  js  c++  java
  • codeforces 801D Volatile Kite

    题目链接:http://codeforces.com/contest/801/problem/D

    题意:给你一个多边形的n个点,点顺时针给出,每个点坐标xi,yi,然后让你求每个点做多移动距离dis,使他还能保持多边形。

    分析:当时也不清楚凸包什么的,看了样例,发现和每个点到相邻点构成的直线的距离有关,计算之后发现是一半,然后样例太坑,我计算点到直线的距离算错了,强行求了一波中位线,然后样例是等腰的还过了,记下来,点到直线的距离具体看代码。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct st{
     4     double x, y;
     5 }a[1005];
     6 double dis(double x1,double y1,double x2,double y2,double x,double y){
     7     if(x1!=x2){
     8         double k=(y2-y1)/(x2-x1);
     9         return fabs((y-y1)-k*(x-x1))/sqrt(1+k*k);
    10     }
    11     else return fabs(x-x1);
    12 }
    13 int main() {
    14     int n;
    15     cin>>n;
    16     for(int i=0;i<n;i++){
    17         cin>>a[i].x>>a[i].y;
    18     }
    19     double result=1e18;
    20     for(int i=0;i<n;i++){
    21         double s=dis(a[(i-1+n)%n].x,a[(i-1+n)%n].y,a[(i+1)%n].x,a[(i+1)%n].y,a[i].x,a[i].y)*0.5;
    22         result=min(result,s);
    23     }
    24     printf("%.8lf
    ",result);
    25     return 0;
    26 }
    View Code
  • 相关阅读:
    SSH--1
    oracle---jdbctest--laobai
    oracle---jdbc--laobai
    oracle--知识点汇总2---laobai
    Tomcat_Java Web_内存溢出总结
    单例经典示例
    线程--demo3
    网络通信---示例
    验证码---示例
    java--绘图
  • 原文地址:https://www.cnblogs.com/ls961006/p/6921435.html
Copyright © 2011-2022 走看看