貓睡覺問題 較複雜模擬

2021-10-06 20:14:11 字數 1446 閱讀 7647

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