hdu 3700 cat
題目給出乙隻貓每天若干個時間段有任務,沒有任務時貓可以睡覺。題目還給出兩個數a和b,表示貓每次睡覺時間不能少於a小時且每次醒著的時間不能多於b小時。題目要求輸出一天貓可能睡覺的時段,如果沒有滿足條件的睡眠時段輸出「no」。
本題的關鍵難點在於處理跨日的情況,首先說正常不跨日情況下的處理方法。首先掃瞄整個任務時間表,如果有任務時長大於b說明肯定不滿足題目條件。之後將時間段排序,當有空閒時間大於a的直接記錄作為睡覺時間,否則就把前一任務、空閒時間和後一任務歸為一整個任務時間,如果該時長大於b直接輸出「no」。
對於跨天情況,只要看第乙個時間起點與最後乙個時間終點間時間差大於a,說明這段時間可以作為睡覺時間,否則需要按上述判斷整個一大段時長是否大於b。
除了上述的基本方法需要認真細緻完成外,我在本題中對時間的處理還有一些不到位,導致一開始浪費了一些時間。下面列出此類時間問題的處理方法,時間記錄在字串str內。更複雜的情況可以以此類推。
pt[i]
.s =
(str[0]
-'0')*
600+
(str[1]
-'0')*
60+(str[3]
-'0')*
10+(str[4]
-'0'
);
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define maxn 1440
using
namespace std;
struct timea[25]
;bool
cmp(
struct time a,
struct time b)
intmain()
}sort
(a,a+n,cmp)
;for
(int i =
0; i < n; i++)}
if(!flag)
tmp.st = a[i+1]
.st;
tmp.ed = a[i+1]
.ed;
}else}}
}if(!flag)
}else
if(v.
size()
>0&&
(v[1
].st-
1+maxn)
%maxn-tmp.st+
1<=b)
else}if
(flag || v.
size()
==0)else}}
return0;
}
Week 14 模擬 A 貓睡覺問題
總結 這是個鏈結 多組資料,多組資料,多組資料哦,每組資料的格式如下 第1行輸入三個整數,a 和 b 和 n 1 a 24,1 b 24,1 n 20 第2到n 1行為每日的新番時間表,每行乙個時間段,格式形如 hh mm hh mm 閉區間 這是一種時間格式,hh mm 的範圍為 00 00 到 ...
A 貓睡覺問題(week14模擬)
no1 準確理解題意,剛開始並沒有完全理解題意,導致寫題寫的很糊塗,把題理解成在1 2天範圍內的時間安排表做好 2 將時間統一格式,全部用分鐘表示,剛開始試圖用 小時 分鐘 形式,但是開閉區間以及時間比較的時候出現了一些問題,導致一直wa,因此下次對於這種時間比較問題最好將時間轉化為乙個整數 3 注...
Week 14 限時大模擬 貓睡覺問題
多組資料,多組資料,多組資料哦,每組資料的格式如下 第1行輸入三個整數,a 和 b 和 n 1 a 24,1 b 24,1 n 20 第2到n 1行為每日的新番時間表,每行乙個時間段,格式形如 hh mm hh mm 閉區間 這是一種時間格式,hh mm 的範圍為 00 00 到 23 59。注意一...