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
  • 相关阅读:
    包含停用词的词频统计(map,set非class版本)<< 0919
    pair,map,set<<0924
    答题程序中用户登录状态的保存<<0924
    时间戳<<0923
    list,vector相关函数与区别<<0922
    类里面的赋值和拷贝函数<<0922
    vector的初始化补充,list,find函数,指针和迭代器等<<0922
    redhat 6上nis配置
    如何查看cache信息
    oprofile 安装使用
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3403049.html
Copyright © 2011-2022 走看看