課堂上有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 給省略掉,只表示可能變化的部分...