給定n個隊伍的到場時間, 有3個報道位, 每個隊伍報道需要b時間, 求所有報道完成的時間。
一開始寫了乙個模擬時間軸的, 雖然過了,但是在時間很大的時候行不通。
1 #include2模擬時間軸using
namespace
std;
3int
main()
418 scanf("
%d", &b);
19 a[0] = q.top() +b; q.pop();
20 u[0] = 1;21
while(1)30
}31//printf("%d %d %d %d\n", time, a[0], a[1], a[2]);
32if(u[0] == 0 && u[1] == 0 && u[2] == 0 && q.empty()) break
;33 time++;34}
35 printf("
%d\n
", time);36}
37return0;
38 }
後來看了一下人家的**, 發現可以用優先佇列模擬報道。
就是一開始對報道時間排序,將3個報道位置加入優先佇列, 然後每次都取最早完成報道的時間, 如果這個時間t小於隊伍時間, 那麼就將a[i] + b入隊, 否則將t+b入隊。
最後就能求出全部完成報道的時間了
1 #include2using
namespace
std;
3int
main()
414 scanf("
%d", &b);
15 sort(a, a +n);
16if( n <= 3
)20 priority_queue, greater >q;
21for(int i = 0; i < 3; i++) q.push(a[i] +b);
22for(int i = 3; i < n; i++)
27else q.push(a[i] +b);28}
29while(!q.empty())33}
34return0;
35 }
小傑的簽到題
題目描述 小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需...
小傑的簽到題
小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需要在任意乙...
小傑的簽到題
題目描述 小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需...