算典04 習題 08

2021-07-29 14:57:09 字數 1293 閱讀 9816

課堂上有n個學生(n≤10)。每個學生都有乙個「睡眠-清醒」週期,其中第i個學生醒ai

分鐘後睡bi

分鐘,然後重複(1≤ai

,bi≤5),初始時第i個學生處在他的週期的第ci

分鐘。每個學生在臨睡前會察看全班睡覺人數是否嚴格大於清醒人數,只有這個條件滿足時才睡覺,否則就堅持聽課ai

分鐘後再次檢查這個條件。問經過多長時間後全班都清醒。例如

用(a,b,c)描述一些學生,則圖4-11中描述了3個學生(2,4,1)、(1,5,2)和(1,4,3)在每個時刻的行為。

注意:有可能並不存在「全部都清醒」的時刻,此時應輸出-1。直接模擬一下,多開幾個陣列記錄狀態就行了

#include 

#include

#include

#include

#define met(a, b) memset(a, b, sizeof(a));

#define in freopen("in.txt", "r", stdin);

const

int maxn = 1e5 + 5;

const

int inf = (1

<<31) - 1;

using

namespace

std;

int n, t[15][maxn], state[15][15],sid[15], cur[15], bg[15], a, b, c;

bool judge()

return0;}

int main()

int cnt = 0, ans = 1; bool f = 0;

for(int i = 0; i < n; ++i) cnt += state[i][cur[i]];

while(cnt)

if(!f) f = 1;

for(int i = 0; i < n; ++i)

else

}cnt = 0;

for(int i = 0; i < n; ++i) cnt += state[i][cur[i]];

}cout

<< "case "

<< ++kase <

<< ans

0;}

算典03 習題 06

有一張圖上,有黑塊和白塊,白塊上有字母 從上到下每一行,從左到右,給符合條件的白塊依次編號,條件是 此白塊的左邊或上邊是邊界或黑塊 要求找到每一行的單詞 按上面編好的號排序 和每一列的單詞輸出,單詞即為最大連續的白塊 只要單純地模擬即可,注意最後的輸出要按編號排序,且編號要右對齊,這裡編號不會超過1...

算典03 習題 07

給出一組dna序列 即一些字串 找出與每個dna序列的差最小的dna序列 差的意思是序列中位置相同但字元不同的位置的個數 輸出這個dna序列以及最小的差 1.準備 這裡有乙個小技巧,dna只有 atcg 四種,要統計這四種出現的次數,就需要一種對應關係,如讓atcg分別對應0123,那麼我就可能用a...

算典03 習題 12

這題我不會做,參考的大神的思路 傳送門浮點數在計算機裡是分三部分表示的 最前面一位表示符號,後面一部分是尾數,最後一部分是階碼 尾數是m,階碼是e的話表示起來就是 m 2e 1 2 m 1 用二進位制表示m的話就應該是0.1xx 用計算機表示的時候就把最前面的 0.1 給省略掉,只表示可能變化的部分...