zoukankan      html  css  js  c++  java
  • 训练赛第二场E题 Cottage Village

    题目大意:在一条X轴上,有若干个正方形,并且保证这些正方形的中心都在X轴上,然后输入n个正方形的中心的X坐标,和正方形的边长,现在要再插入一个正方形,要求是,新插入的正方形至少要有一条边与原来的正方形的一条边重合,然后输入新插入的正方形的边长,问一共有多少种插入的方法。

    解题报告:模拟题,我的做法是用一个结构体保存每个正方形的中心的X坐标和正方形的边长,然后再把所有的正方形按照中心的X坐标从小到大排一次序,然后从前往后扫描一遍,当两个相邻的正方形之间的距离大于要插入的正方形的边长的时候,说明在这个位置可以有两种插入的方法,当相邻的正方形之间的距离等于要插入的正方形的的边长时,说明在这个位置只有一种插入的方法,然后第一个正方形的左边跟最后一个正方形的右边分别一定有一种插入的方法,这样就可以了。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 struct node
     7 {
     8     double s,t;
     9 }A[1005];
    10 
    11 bool cmp(node a,node b)
    12 {
    13     return a.s < b.s;
    14 }
    15 
    16 int main()
    17 {
    18     int n;
    19     double t;
    20     while(scanf("%d%lf",&n,&t)!=EOF)
    21     {
    22         for(int i = 0;i < n;++i)
    23         scanf("%lf%lf",&A[i].s,&A[i].t);
    24         sort(A,A+n,cmp);
    25         int ans = 2;
    26         for(int i = 0;i < n - 1;++i)
    27         {
    28             double kuan = A[i+1].s - A[i+1].t / 2.0 - (A[i].s + A[i].t/2.0);
    29             if(kuan > t) ans += 2;
    30             else if(kuan == t) ans++;
    31         }
    32         printf("%d
    ",ans);
    33     }
    34     return 0;
    35 }
    View Code
  • 相关阅读:
    存储过程的常见结构
    js 立即调用的函数表达式
    浏览器控制台换行
    js 函数声明和函数表达式
    JavaScript中把Json字符串转化为对象
    js判断对象还是数组
    Flex 基础语法(三)
    Flex 基础语法(二)
    Flex 基础语法(一)
    SVN提交文件的时候过滤指定文件
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3403049.html
Copyright © 2011-2022 走看看