zoukankan      html  css  js  c++  java
  • Kadj Squares POJ

    Kadj Squares  POJ - 3347 

     

     题目链接:https://vjudge.net/problem/POJ-3347

     题意:坐标上从左往右放置几个正方形,且旋转45°,下顶点落在x轴上,求从上往下可以看见哪些正方形

     思路:好恶心。。。。算出每个正方形左右顶点的坐标,当第一个正方形确定后,以后的每下一个的正方形从左往右紧贴着之前的正方形,最大的就是该正方形准确位置,运算过程中合理使用乘除根号2,当正方形被覆盖时,该正方形的左端点的x坐标为她前一个正方形右端点的x坐标,这样一来左右端点x值相减时就好判断是否被覆盖,仔细画图就能理解。。。。

     1 //
     2 // Created by HJYL on 2020/1/17.
     3 //
     4 #include<iostream>
     5 #include<cstring>
     6 #include<cstdio>
     7 #include<cmath>
     8 #include<algorithm>
     9 using namespace std;
    10 const double eps=1e-8;
    11 const int maxn=100;
    12 const double gen2=sqrt(2.0);
    13 struct Point{
    14     double left,right,len;
    15 };
    16 int main()
    17 {
    18 
    19     int T;
    20     while(~scanf("%d",&T)&&T)
    21     {
    22         Point p[maxn];
    23         for(int i=0;i<T;i++)
    24             scanf("%lf",&p[i].len);
    25         p[0].left=0.0;
    26         for(int i=0;i<T;i++)
    27         {
    28             double ll=0.0;
    29             for(int j=0;j<i;j++)
    30             {
    31                 ll=max(ll,p[j].right-fabs(p[i].len-p[j].len)/gen2);
    32             }
    33             p[i].left=ll;
    34             p[i].right=ll+p[i].len*gen2;
    35         }
    36         for(int i=0;i<T;i++)
    37         {
    38             for(int j=0;j<i;j++)
    39             {
    40                 if(p[i].len>p[j].len&&p[i].left<p[j].right)
    41                     p[j].right=p[i].left;
    42                 if(p[i].len<p[j].len&&p[i].left<p[j].right)
    43                     p[i].left=p[j].right;
    44             }
    45         }
    46         for(int i=0;i<T;i++)
    47         {
    48             if(p[i].right-p[i].left>eps)
    49                 printf("%d ",i+1);
    50         }
    51         printf("
    ");
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/Vampire6/p/12208019.html
Copyright © 2011-2022 走看看