NowCoder小傑的簽到題 模擬,思維

2022-08-17 01:42:13 字數 1180 閱讀 1159

給定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 #include2

using

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 }

小傑的簽到題

題目描述 小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需...

小傑的簽到題

小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需要在任意乙...

小傑的簽到題

題目描述 小傑組織了一場比賽,在比賽前需要安排隊伍簽到,但他不確定簽到要花多久時間,現在他來請求你的幫助。已知簽到是在乙個體育館,該體育館布置有三個桌子以供不同隊伍的隊伍同時簽到,乙個桌子最多只能有一支隊伍簽到,一支隊伍只需在一張桌子前完成簽到即可。如果三個桌子都有隊伍在簽到,其它需要簽到的隊伍就需...