Week 14 限時大模擬 貓睡覺問題

2021-10-06 09:46:40 字數 2348 閱讀 9503

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

第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 分鐘。

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

我們知道,時間管理是一項很難的活,所以你可能沒有辦法安排的那麼好,使得這個時間段滿足喵喵的要求,即每次睡必須時間連續且不少於 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 不太一樣,也可能是對的,它有乙個判題程式來判定你的答案(當然,你對你自己的答案肯定也能肉眼判斷)

12121

23:00-

01:003

4307:

00-08:

0011:00

-11:09

19:00-

19:59

yes101

:07-22

:13no

將番的開始時間與結束時間以距零點的分鐘數進行記錄。

根據番劇的播出開始時間對時間表進行排序,對於橫跨零點的時間,將其記錄為大於2460的數,這樣除了最後乙個時間段與第乙個時間段之間的空閒時間外,其他時間段就可以用一條時間軸來考慮。

使用乙個變數last,記錄當前持續醒著的時間段,若last>b60則停止迴圈,輸出no,否則遍歷每個時間段,若空閒時間大於a60,則這段時間用於睡覺,並更新last的起始時間與結束時間,若小於a60則不能睡覺,僅更新last的結束時間,last結束時間更新為當前播出時間的的結束時間。

遍歷玩所有時間段後,還需要考慮最後乙個時間段與第二天的第乙個時間段之間的空閒時間是否大於a60,若大於則用於睡覺,此時時間已經開始迴圈了,就可以直接輸出結果,若不能用於睡覺,則當前清醒持續時間與我們在第一天考慮的第一段持續時間要長,需要考慮當前持續時間加上最後乙個時間段結束到第一次可睡覺的時間點的總持續時間是否大於b60,若大於,仍不滿足要求,輸出no。否則說明可以一直清醒到睡覺時間,時間仍可開始乙個迴圈,輸出結果即可。

每次記錄時間時,要考慮到底是第一天的時間,還是第二天的時間,分鐘數加一減一時可能不在0~24*60的範圍裡,需要進行處理,以便下一次使用當前記錄時間時不會出錯。

#include

#include

using

namespace std;

const

int size=20+

10;const

int all=24*

60;int a,b,n;

struct tim};

tim be[size]

;tim ans[size]

;int num;

void

solve()

int temp=be[i]

.be-be[i-1]

.en-1;

if(temp>=a*60)

else

last.en=be[i]

.en;}if

((last.en-last.be+1)

>b*60)

flag=

false;if

(flag)

else

if(num!=-1

)}if(

!flag||num==-1

)printf

("no\n");

else}}

intmain()

solve()

;}return0;

}

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

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

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