有一種神奇斑點蛇,蛇如其名,全身都是斑點,斑點數量可以任意改變。
有一天,蒜頭君十分的無聊,開始數蛇上的斑點。假設這條蛇的長度是n cm,蒜頭君已經數完開始時蛇身的第i上有ai個斑點。
現在蒜頭君想知道這條斑點蛇的任意區間的蛇身上一共有多少個斑點。這好像是乙個很容易的
事情,但是這條蛇好像是和蒜頭君過不去,總是刻意的改變蛇身上的斑點數量。
於是,蒜頭君受不了了,加上蒜頭君有密集型恐懼症。聰明又能幹的你能幫幫他嗎?
第一行乙個正整數 n(n≤50000)表示這條斑點蛇長度為 n 厘公尺,接下來有 n 個正整數,第 i 個正整數 ai 代表第 i 個斑點蛇第 i 厘公尺開始時有 ai 個斑點(1≤ai≤50)。
接下來每行有一條命令,命令有 4 種形式:
(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 厘公尺的斑點總數(包括第 i 厘公尺和第 j 厘公尺);
(4) end 表示結束,這條命令在每組資料最後出現;
最多有 40000 條命令。
對於每個 query 詢問,輸出乙個整數並回車,表示詢問的段中的總斑點數,這個數保證在int範圍內。
樣例輸入
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樣例輸出633
59分析
這道題就是計蒜客前面所描述的模板,直接把**稍微一改就能ac了。
#include
using
namespace std;
const
int max_n =
50010
;int s[
4*max_n]
;voidup(
int p)
void
modify
(int p,
int l,
int r,
int x,
int v)
int mid=
(l+r)/2
;if(x<=mid)
else
up(p);}
intquery
(int p,
int l,
int r,
int x,
int y)
int mid=
(l+r)/2
,res=0;
if(x<=mid)
if(y>mid)
return res;
}int
main()
char op;
while
((cin>>op)
&&(op[0]
!='e'))
return0;
}
計蒜客習題 朋友
在社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。現在,已知若干對朋友關係,詢問某兩個人是不是朋友。請編寫乙個程式來解決這個問題吧。輸入格式 第一行 三個整數 n,m,p n ...
計蒜客習題 逃跑
一位博主寫了ac 但是無論是廣度bfs還是深度dfs,都會報錯,dfs是執行超時,bfs是答案錯誤。傳送門 另一位博主使用了dfs 有興趣可以看下,沒有檢驗是否正確,傳送門 根據前位博主的bfs 做了幾項修改,然後用自己的 找錯前位博主,發現找不出來,有興趣的小夥伴可以試下,找一下前位博主的錯誤。當...
計蒜客習題 蒜廠年會
蒜廠要開年會了,所有的員工都要參加。每兩個員工之間都有乙個親密度。在同乙個專案工作過的員工之間的親密度為 1。如果 a 和 b b 和 c 均在同乙個專案中工作過,而 a 和 c 沒有,那麼 a 和 c 之間的親密度為 1 1 2。同理,如果 a 和 b 之間的親密度為 x,b 和 c 之間的親密度...