Codeup分塊思想 區間查詢

2021-09-26 15:32:10 字數 1082 閱讀 9102

時間限制: 2 sec  記憶體限制: 32 mb

提交: 198  解決: 107

[提交][狀態][討論版][命題人:外部匯入]

食堂有n個打飯視窗,現在正到了午飯時間,每個視窗都排了很多的學生,而且每個視窗排隊的人數在不斷的變化。

現在問你第i個視窗到第j個視窗一共有多少人在排隊?

輸入的第一行是乙個整數t,表示有t組測試資料。

每組輸入的第一行是乙個正整數n(n<=30000),表示食堂有n個視窗。

接下來一行輸入n個正整數,第i個正整數ai表示第i個視窗最開始有ai個人排隊。(1<=ai<=50)

接下來每行有一條命令,命令有四種形式:

(1)add i j,i和j為正整數,表示第i個視窗增加j個人(j不超過30);

(2)sub i j,i和j為正整數,表示第i個視窗減少j個人(j不超過30);

(3)query i j,i和j為正整數,i<=j,表示詢問第i到第j個視窗的總人數;

(4)end 表示結束,這條命令在每組資料最後出現;

每組資料最多有40000條命令。

對於每組輸入,首先輸出樣例號,佔一行。

然後對於每個query詢問,輸出乙個整數,佔一行,表示詢問的段中的總人數,這個數保持在int以內。

1

101 2 3 4 5 6 7 8 9 10

query 1 3

add 3 6

query 2 7

sub 10 2

add 6 3

query 3 10

end

case 1:633

59

#includeusing namespace std;

int main(),w[310]=;

for(int i=1;i<=n;i++)

while(cin>>s)

else if(s=="sub")

else if(s=="query")

}else

cout<}

else break;

} }

return 0;

}

分塊 (查詢區間最小眾數

題目鏈結 1 include2 include3 include4 include5 include6 include 7 include8 include9 include10 include11 include12 include13 include14 include 15 include16...

整除分塊思想

對於求形如 sum lfloor frac rfloor 的值,就需要用到整除分塊,否則當n很大時就會超時。在普通的乙個乙個的計算時可以發現很多 lfloor frac rfloor 的值成塊狀分布,最終的到的規律是發現對於每乙個值相同的塊,它的最後乙個數就是n n i for int l 1,r ...

區間分塊系列

很好的分塊知識講解。可能涉及的幾個詞語解釋 區間 數列中連續一段的元素 區間操作 將某個區間 a,b 的所有元素進行某種改動的操作 塊 我們將數列劃分成若干個不相交的區間,每個區間稱為乙個塊 整塊 在乙個區間操作時,完整包含於區間的塊 不完整的塊 在乙個區間操作時,只有部分包含於區間的塊,即區間左右...