zoukankan      html  css  js  c++  java
  • 洛谷 AT763【感雨時刻の整理】

    题目描述

    雨の降っていた時刻というのは、降水量と並んで重要です。今、ある 11 日の、雨が降っていた時刻に関するメモが見つかったので、これを整理して、雨の降っていた時刻を調べたいと思います。

    整理は、以下の規則に従って行います。

    • 感雨時間のメモから、その日 11 日の雨の降っていた時刻を時系列順に出す。日付を超えて降っている雨は、 00:0000:00 降り始めや 24:0024:00 降り終わりとして扱われるものとし、日付をまたぐようなメモは入力されない。
    • 雨の降り始め・降り終わりはそれぞれ直前・直後の 55 分単位の時刻に丸める。例えば、 13:2313:23 に降り始めて 14:0114:01 にやんだ雨は、 13:2013:20 から 14:0514:05 まで降っていたということにする。
    • 丸めた後の結果において、 22 つ以上のメモに書かれていた感雨時刻が重複した場合、 11 つの連続した雨とみなす。例えば、 11:0611:06 に降り始めて 11:2311:23 にやんだ雨、 11:2911:29 に降り始めて 12:0312:03 にやんだ雨、 11:4811:48 に降り始めて 12:1012:10 にやんだ雨の 33 つがあった場合、 11:0511:05 〜 11:2511:25 、 11:2511:25 〜 12:0512:05 、 11:4511:45 〜 12:1012:10 の 33 つの雨であるが、時間がかぶっているところをくっつけて 11:0511:05 から 12:1012:10 まで降っていた、 11 つの連続した雨ということにする。

      メモの内容が入力される時、雨の降っていた時刻を、この規則に合致するよう整理して出力するプログラムを作成してください。

    输入输出格式

    输入格式:

    输出格式:

    雨が降っていた時刻を整理して、降り始めの時刻の早い順番に、降り始めた時刻と降り終わりの時刻をハイフンで区切って出力せよ。
    その際、連続した 11 つの雨を 11 行に出力し、時刻の形式は入力と同じ形式を用いること。
    また、出力の末尾には改行を入れること。

     

    解题思路

      第一步肯定先去翻译,剩下的题解里见(洛谷唯一一个提交的,好孤独)。

     

    题解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 string sj[1000001];
     4 int main()
     5 {
     6     int n;
     7     string s;
     8     string x,y,x1,y1;
     9     scanf("%d",&n);
    10     for(int i=1;i<=n;i++)
    11     {
    12         cin>>s;
    13         if(s[3]>='1'&&s[3]<='4')s[3]='0';//舍去 
    14         else if(s[3]>='6'&&s[3]<='9')s[3]='5';//舍去 
    15         if(s[8]>='1'&&s[8]<='4')s[8]='5';//向大的约 
    16         else if(s[8]>='6'&&s[8]<='9')//向大的约,进位 
    17         {
    18             s[8]='0';
    19             if(s[7]=='5')//分钟要约 
    20             {
    21                 s[7]='0';
    22                 if(s[6]=='9')//进位 
    23                 {
    24                     s[6]='0';
    25                     s[5]++;
    26                 }
    27                 else s[6]++;
    28             }
    29             else s[7]++;
    30         }
    31         sj[i]=s;
    32     }
    33     sort(sj+1,sj+1+n);
    34     x=sj[1].substr(0,4);
    35     y=sj[1].substr(5,4);
    36     for(int i=2;i<=n;i++)
    37     {
    38         x1=sj[i].substr(0,4);
    39         y1=sj[i].substr(5,4);
    40         if(x1>=x&&x1<=y&&y1>=y){sj[i]=x+'-'+y1;x=x;y=y1;continue;}
    41         else if(x1>=x&&x1<=y&&y1>=x&&y1<=y){sj[i]=x+'-'+y;continue;}//各种判断,理解靠自己 
    42         else{
    43             x=x1;
    44             y=y1;
    45             cout<<sj[i-1]<<endl;
    46             }
    47     }
    48     cout<<sj[n]<<endl;
    49     return 0;
    50 }
  • 相关阅读:
    HDU 4901 The Romantic Hero
    COGS8 备用交换机
    POJ 1466 Girls and Boys
    bzoj3442 学习小组
    bzoj2054 疯狂的馒头
    POJ2135 Farm Tour
    POJ 1149 PIGS
    Html5 Canvas学习之路(五)
    关于跨域简单总结
    vue-baidu-map 进入页面自动定位的解决方案!
  • 原文地址:https://www.cnblogs.com/hualian/p/11166291.html
Copyright © 2011-2022 走看看