1538 清點人數

2021-09-25 13:45:41 字數 1191 閱讀 9852

nk 中學組織同學們去五雲山寨參加社會實踐活動,按慣例要乘坐火車去。由於 nk 中學的學生很多,在火車開之前必須清點好人數。

初始時,火車上沒有學生。當同學們開始上火車時,年級主任從第一節車廂出發走到最後一節車廂,每節車廂隨時都有可能有同學上下。年級主任走到第 m 節車廂時,他想知道前 m 節車廂上一共有多少學生,但是他沒有調頭往回走的習慣。也就是說每次當他提問時,m 總會比前一次大。

第一行兩個整數 n,k,表示火車共有 n 節車廂以及 k 個事件。

接下來有 k 行,按時間先後給出 k 個事件,每行開頭都有乙個字母 a,b 或 c。

如果字母為 a,接下來是乙個數 m,表示年級主任現在在第 m 節車廂;

如果字母為 b,接下來是兩個數 m,p,表示在第 m 節車廂有 p 名學生上車;

如果字母為 c,接下來是兩個數 m,p,表示在第 m 節車廂有 p 名學生下車。

學生總人數不會超過 105 。

對於每個 a ,輸出一行,乙個整數,表示年級主任的問題的答案。

10 7

a 1b 1 1

b 3 1

b 4 1

a 2a 3

a 10

012

3

對於 30% 的資料,1≤n,k≤104 ,至少有 3000 個 a;

對於 100% 的資料,1≤n≤5×105,1≤k≤105 ,至少有 3×104 個 a。

裸的樹狀陣列,讀資料時cin鐵定超時,換用scanf問題就來了,用getchar()讀回車不知為何會錯,看到別人的部落格,讀字元是scanf(" %c",&op);這樣的,前面多乙個空格,也能解決換行符問題,記一下.

#include

using

namespace std;

const

int maxn =

1e6+5;

int n,k,sum[maxn]

;void

add(

int p,

int x)

intask

(int p)

intmain()

else

if(op==

'b')

else

if(op==

'c')

}return0;

}

Github 的清點物件演算法

日期 2015年9月30日 github 的清點物件演算法 阮一峰的網路日誌 使用 github 的時候,你有沒有見過下面的提示?這段提示說,遠端 庫一共有4350078個物件需要轉殖。這就叫 清點物件 counting objects github需要實時計算出來,需要轉殖的物件總數。這個過程非常...

問題 D 清點人數

題目描述 nk中學組織同學們去五雲山寨參加社會實踐活動,按慣例要乘坐火車去。由於nk中學的學生很多,在火車開之前必須清點好人數。初始時,火車上沒有學生。當同學們開始上火車時,年級主任從第一節車廂出發走到最後一節車廂,每節車廂隨時都有可能有同學上下。年級主任走到第m節車廂時,他想知道前m節車廂上一共有...

SUOI 37 清點更多船隻

經典問題 正常解法是樹狀陣列或線段樹 但這題記憶體給的很小 分塊可以省記憶體 我們分析一下 樹狀陣列 線段樹分塊 時間 nlogn 20 times 10 6 nlogn 20 times 10 6 n sqrt n 10 3 times 10 6 記憶體 2 times n 2 times 8 t...