NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2007國中組初賽
 [C++] 2007 NPSC 國中組初賽 A. 霍格華茲特快車

作者 主題: [C++] 2007 NPSC 國中組初賽 A. 霍格華茲特快車  (閱讀 1659 次)

bleed1979

  • 初級會員
  • **
  • 文章數: 28
    • 檢視個人資料
[C++] 2007 NPSC 國中組初賽 A. 霍格華茲特快車
« 於: 七月 18, 2010, 07:53:19 am »

本題同ZJ的b075。

題目目的︰給您一個火車到站時間的區間,包括區間起點和區間終點,和每位學生需要多久時間才能到達車站。求出每位學生最早要幾點出發,最晚要幾點出發。

解題技巧︰時間的相減。如果被減數的分鐘數比較小,就向小時借位。

代碼: [選擇]
// C++, ZJ b075, NPSC 2007 junior first

#include <cstdio>

struct Time
{
  int sh;  // start hour
  int sm;  // start minute
  int eh;  // end hour
  int em;  // end minute
};

int main ()
{
  int k, r;
 
  r = scanf ( "%d", &k );
 
  while ( k-- )
  {
    Time station;
    int q;
   
    r = scanf ( "%d %2d:%2d %2d:%2d", &q,
                &station.sh, &station.sm, &station.eh, &station.em );
               
    char dummy[1000];
    Time student;
   
    while ( q-- )
    {
      r = scanf ( "%s %2d:%2d", dummy, &student.sh, &student.sm );
     
      Time temp = station;
     
      if ( temp.sm < student.sm )
      {
        --temp.sh;
        temp.sm += 60;
      }
     
      if ( temp.em < student.sm )
      {
        --temp.eh;
        temp.em += 60;
      }
     
      printf ( "%.2d:%.2d %.2d:%.2d\n",
               temp.sh - student.sh, temp.sm - student.sm,
               temp.eh - student.sh, temp.em - student.sm);
    }
  }
 
  return ( 0 );
}
記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2007國中組初賽
 [C++] 2007 NPSC 國中組初賽 A. 霍格華茲特快車