時間限制:2 sec
記憶體限制:32 mb
提交:162
解決:62
提交狀態
現在問你第i個視窗到第j個視窗一共有多少人在排隊?
每組輸入的第一行是乙個正整數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以內。
#include#include#includeusing namespace std;
int n,c1[30010];
int lowbit(int n)
int add(int i,int data)
}long long sum(int i)
return sum1;
}int main()
while(cin>>c)
else if(strcmp(c,"add")==0)
else if(strcmp(c,"sub")==0)
else}}
}
樹狀陣列 區間修改,區間查詢
也許更好的閱讀體驗 好東西,以後可以不打線段樹了 本篇假定讀者都會最基礎的兩種樹狀陣列,即區改單查和單改區查 思考如何維護乙個區間的值,想到了差分 對乙個差分陣列做一次字首和可以得到每個位置的值 再對每個位置累加一下就是乙個區間的值 公式化的講,就是 設差分陣列為 c 則每個位置的值 val i s...
樹狀陣列區間修改區間查詢
題面 首先,我們要推乙個柿子。displaystyle sum a i 把a i 用差分陣列表示出來,就可以寫成 displaystyle sum sum d i 我們考慮一下,每個d i 出現的次數是一定的。那我們可以換一下列舉順序,先列舉d i 在列舉他出現的次數,就可以變成 displayst...
樹狀陣列(單點修改和區間查詢問題)
今天剛學了樹狀陣列,理解還不是很透徹,寫點東西加深理解 記憶 c陣列表示樹狀陣列,a陣列表示普通的陣列 下面用乙個模板題來講解 洛谷 樹狀陣列1 乙個很常見也很簡單的單點修改和區間查詢問題。在學樹狀陣列前有兩種比較常見的解法 單點修改直接修改值,區間查詢時間複雜度是o n 使用字首和優化區間查詢,這...