題目描述:
\quad
有n個小組要排成乙個佇列,每個小組中有若干人。當乙個人來到佇列時,如果佇列中已經有了自己小組的成員,他就直接插隊排在自己小組成員的後面,否則就站在隊伍的最後面。請你編寫乙個程式,模擬這種小組佇列。
輸入格式:
\quad
輸入將包含乙個或多個測試用例。對於每個測試用例,第一行輸入小組數量t。接下來t行,每行輸入乙個小組描述,第乙個數表示這個小組的人數,接下來的數表示這個小組的人的編號。編號是0到999999範圍內的整數。乙個小組最多可包含1000個人。
\quad
最後,命令列表如下。 有三種不同的命令:
\quad
每個命令佔一行。當輸入用例t=0時,代表停止輸入。需注意:測試用例最多可包含200000(20萬)個命令,因此小組佇列的實現應該是高效的:入隊和出隊都需要使用常數時間。
輸出樣例:
\quad
對於每個測試用例,首先輸出一行「scenario #k」,其中k是測試用例的編號。然後,對於每個dequeue命令,輸出出隊的人的編號,每個編號佔一行。在每個測試用例(包括最後乙個測試用例)輸出完成後,輸出乙個空行。
資料範圍:
1 ≤t
≤1000
1≤t≤1000
1≤t≤10
00輸入樣例:
2
3101
102103
3201
202203
enqueue 101
enqueue 201
enqueue 102
enqueue 202
enqueue 103
enqueue 203
dequeue
dequeue
dequeue
dequeue
dequeue
dequeue
stop25
259001
259002
259003
259004
259005
6260001
260002
260003
260004
260005
260006
enqueue 259001
enqueue 260001
enqueue 259002
enqueue 259003
enqueue 259004
enqueue 259005
dequeue
dequeue
enqueue 260002
enqueue 260003
dequeue
dequeue
dequeue
dequeue
stop
0
輸出樣例:
scenario #1
101102
103201
202203
scenario #2
259001
259002
259003
259004
259005
260001
思路:可以給每個小組queueperson[i]
乙個佇列記錄其出隊入隊情況,還需要用乙個佇列記錄小組之間的順序queueteam
,用乙個陣列記錄每個小朋友id對應的組別。
程式(cpp):
#include
#include
#include
using
namespace std;
const
int n =
1010
, m =
1e7+10;
int id[m]
;int
main()
} string q;
queue<
int> team;
queue<
int> person[n]
;while
(cin >> q && q[0]
!='s'
)else
// 出隊操作
} cout << endl;
// 別忘了輸出格式中每一種情況後有換行
}}
題目描述:
\quad
蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現在共有 n 只蚯蚓,第 i 只蚯蚓的長度為 ai ,所有蚯蚓的長度都是非負整數,即可能存在長度為0的蚯蚓。每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻,將其切成兩段。若有多隻最長的,則任選乙隻。神刀手切開蚯蚓的位置由有理數 p 決定。乙隻長度為 x 的蚯蚓會被切成兩隻長度分別為 ⌊px⌋ 和 x−⌊px⌋ 的蚯蚓。特殊地,如果這兩個數的其中乙個等於0,則這個長度為0的蚯蚓也會被保留。此外,除了剛剛產生的兩隻新蚯蚓,其餘蚯蚓的長度都會增加乙個非負整數 q 。蛐蛐國王知道這樣不是長久之計,因為蚯蚓不僅會越來越多,還會越來越長。蛐蛐國王決定求助於一位有著洪荒之力的神秘人物,但是救兵還需要 m 秒才能到來。蛐蛐國王希望知道這 m 秒內的戰況。具體來說,他希望知道:
輸入格式:
\quad
第一行包含六個整數 n,m,q,u,v,t,其中:n,m,q 的意義參考題目描述;u,v,t 均為正整數;你需要自己計算 p=u/v(保證 0\quad
第二行包含 n 個非負整數,為 a1,a2,…,an,即初始時 n 只蚯蚓的長度。
\quad
同一行中相鄰的兩個數之間,恰好用乙個空格隔開。
輸出格式:
\quad
第一行輸出 ⌊m/t⌋ 個整數,按時間順序,依次輸出第 t 秒,第 2t 秒,第 3t 秒,……被切斷蚯蚓(在被切斷前)的長度。
\quad
第二行輸出 ⌊(n+m)/t⌋ 個整數,輸出 m 秒後蚯蚓的長度;需要按從大到小的順序,依次輸出排名第 t,第 2t,第 3t,……的長度。
\quad
同一行中相鄰的兩個數之間,恰好用乙個空格隔開。即使某一行沒有任何數需要輸出,你也應輸出乙個空行。請閱讀樣例來更好地理解這個格式。
資料範圍:
1 ≤n
≤105
1≤n≤10^5
1≤n≤10
5,0 ≤a
i≤
1080≤a_i≤108
0≤ai≤
108,
0
<
p<10
0<
p<1,
0 ≤q
≤200
0≤q≤200
0≤q≤20
0,0 ≤m
≤7
∗106
0≤m≤7∗106
0≤m≤7∗
106,
0
<
u 1090 0< u109, 1 ≤t ≤71 1≤t≤71 1≤t≤71 輸入樣例:371
1313
32輸出樣例:
344
4556
6665
5443
22
樣例解釋:
樣例中,在神刀手到來前:3只蚯蚓的長度為3,3,2。
1秒後:乙隻長度為3的蚯蚓被切成了兩隻長度分別為1和2的蚯蚓,其餘蚯蚓的長度增加了1。最終4只蚯蚓的長度分別為(1,2),4,3。 括號表示這個位置剛剛有乙隻蚯蚓被切斷。
2秒後:乙隻長度為4的蚯蚓被切成了1和3。5只蚯蚓的長度分別為:2,3,(1,3),4。
3秒後:乙隻長度為4的蚯蚓被切斷。6只蚯蚓的長度分別為:3,4,2,4,(1,3)。
4秒後:乙隻長度為4的蚯蚓被切斷。7只蚯蚓的長度分別為:4,(1,3),3,5,2,4。
5秒後:乙隻長度為5的蚯蚓被切斷。8只蚯蚓的長度分別為:5,2,4,4,(1,4),3,5。
6秒後:乙隻長度為5的蚯蚓被切斷。9只蚯蚓的長度分別為:(1,4),3,5,5,2,5,4,6。
7秒後:乙隻長度為6的蚯蚓被切斷。10只蚯蚓的長度分別為:2,5,4,6,6,3,6,5,(2,4)。
所以,7秒內被切斷的蚯蚓的長度依次為3,4,4,4,5,5,6。
7秒後,所有蚯蚓長度從大到小排序為6,6,6,5,5,4,4,3,2,2。
leetcode刷題 開始篇
第一道題 reverse words in a string.也就是說翻轉乙個字串的單詞。例如輸入為 hello world,it suck but i love it.輸出為 it love it but suck it world,hello 基本思路為 首先進行整個字串的reverse。然後對...
LeetCode刷題 演算法篇
暴力解法 class solution def twosum self,nums list int target int list int i 0 while i j i 1 while j if nums i nums j target return i,j j 1i 1 return none ...
python刷題 單調佇列
class solution def maxslidingwindow self,nums list int k int list int from collections import deque queue deque res for i in range len nums if i k 1 先...