week14 限時大模擬A貓睡覺問題

2021-10-06 12:32:08 字數 2803 閱讀 9565

input

多組資料,多組資料,多組資料哦,每組資料的格式如下:

第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。注意一下,時間段是保證不重疊的,但是可能出現跨夜的新番,即新番的開始時間點大於結束時間點。

保證每個時間段的開始時間點和結束時間點不一樣,即不可能出現類似 08:00-08:00 這種的時間段。時長的計算由於是閉區間所以也是有點坑的,比如 12:00-13:59 的時長就是 120 分鐘。

不保證輸入的新番時間表有序。

output

我們知道,時間管理是一項很難的活,所以你可能沒有辦法安排的那麼好,使得這個時間段滿足喵喵的要求,即每次睡必須時間連續且不少於 a 小時,每次醒必須時間連續且不大於 b 小時,還要能看完所有的番,所以輸出的第一行是 yes 或者 no,代表是否存在滿足貓貓要求的時間管理辦法。

然後,對於時間管理,你只要告訴喵喵,它什麼時候睡覺即可。

即第2行輸出乙個整數 k,代表當天有多少個時間段要睡覺

接下來 k 行是喵喵的睡覺時間段,每行乙個時間段,格式形如 hh:mm-hh:mm (閉區間),這個在前面也有定義。注意一下,如果喵喵的睡眠時段跨越當天到達了明天,比如從23點50分睡到0點40分,那就輸出23:50-00:40,如果從今晚23:50睡到明天早上7:30,那就輸出23:50-07:30。

輸出要排序嗎?(輸出打亂是能過的,也就是說,題目對輸出的那些時間段間的順序是沒有要求的)

哦對了,喵喵告訴你說,本題是 special judge,如果你的輸出答案和 sample 不太一樣,也可能是對的,它有乙個判題程式來判定你的答案(當然,你對你自己的答案肯定也能肉眼判斷)

sample input

12 12 1

23:00-01:00

3 4 3

07:00-08:00

11:00-11:09

19:00-19:59

sample output

yes

101:07-22:13

no

我的思路:

這道題是要求判斷是否可以滿足貓的睡眠時間和工作時間的要求,睡眠時間要求一次連續不少於一定時間,工作時間要求一次連續不多於一定時間,且睡眠和工作一天之內可以發生多次。首先,因為這道題涉及到時間,所以我們要先把時間的度量定下來。因為涉及到一天24小時,所以講所有時間都轉化為分鐘即可,這樣計算時間長短也會方便一些。然後,就是將必須要醒著的時間儲存下來,並按照開始時間從小到大排序(如果有跨天的,則把結束時間加上24*60,以說明是第二天)。之後,從頭開始遍歷這個排好序的時間段,把滿足條件的睡眠開始、結束時間點記錄下來,注意,這裡如果兩次工作的間隔時間小於最小睡眠時間,是不能睡眠的,也要保持工作狀態。最後,記得還要把首尾任務之間的時間做一下上述判斷。將分鐘轉換為輸出格式要求的小時、分鐘格式,然後按照要求輸出結果即可。

我的總結:

這道題涉及跨天的時間要判斷好,同時,對於時間段的長度也要根據題目要求(例如01:00~01:59為60分鐘)進行計算。

我的**:

#include

#include

#include

#include

#include

using

namespace std;

int a,b,n;

string st;

struct duan

duan

(int x1,

int x2)

bool

operator

<

(const duan& t)

const

}tt[50]

,last,can_s;

vector sleep;

intcha

(string a)

void

print()

}void

init()

intmain()

if(tt[i]

.endd-tt[i]

.beg+

1>b)}if

(!flag)

sort

(tt,tt+n)

; last.beg = tt[0]

.beg;

last.endd = tt[0]

.endd;

for(

int i=

1;i)else}}

if(!flag)

if(tt[0]

.beg+24*

60- last.endd-

1>= a)

else

if(sleep.

size()

==0||(sleep[0]

.beg -1+

24*60)

%(24*

60)- last.beg+

1>b)

cout<<

"yes"

;}return0;

}

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。注意一...

Week14 限時大模擬 A 貓睡覺問題

眾所周知,tt家裡有乙隻魔法喵。這只喵十分嗜睡。一睡就沒有白天黑夜。喵喵一天可以睡多次!每次想睡多久就睡多久 喵睡覺的時段是連續的,即一旦喵喵開始睡覺了,就不能被打擾,不然喵會咬人噠 可以假設喵喵必須要睡眠連續不少於 a 個小時,即一旦喵喵開始睡覺了,至少連續 a 個小時內 即a 60分鐘內 不能被...

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 到 ...