****
timelimit:1000ms memorylimit:128000kb
64-bit integer io format:%lld
problem description
漲姿勢題就是所謂的優化題,在組隊賽中,隊伍發現了一題水題,那麼應該交給誰去處理?作為處理水題的**手,應該具備什麼樣的素養?
1,要快,水題拼的就是速度!
2,不能卡水題!水題都卡,絕對不是乙個**手的風範!
3,不能出錯,錯一次即罰時20分鐘,對於水題來講是致命的!
4,要能看出來一題是水題!沒有這條,上面三條都是沒有意義的!
如果你希望你成團隊中乙個合格的**手,那麼這套題是你最好的選擇,快ac吧!
本系列即是為了提高水題**手的素養而準備的!水題經常需要用到簡單的優化,中難題的解題過程中也經常需要各種優化,優化是處理超時的首要選擇,目的是降低時間複雜度。
漲姿勢題為3題,題面完全相同,僅資料範圍不同,請根據不同的資料範圍選擇合適的演算法。
題目描述:
給定數列a[1] a[2] … a[n]
多次詢問
每次詢問 有乙個數字 qi
求有多少組(l,r)滿足 f(l,r)=a[l]+a[l+1]+…+a[r]=qi
input
第一行是乙個t表示測試資料的組數。
每組資料的第一行是兩個整數n、q,分別表示陣列長度和詢問的次數
第二行是n個整數a[1],a[2],…,a[n]。
接下來是q行,每行乙個整數qi表示第i次詢問。
資料範圍:
第1題:t<=130,1<=n<=1000,-10^9<=ai<=10^9,-10^12<=qi<=10^12,大資料不超過一半,每組大資料的q為1或2。
第2題:t<=130,1<=n<=10000,q<=50,1<=ai<=10^9,1<=qi<=10^12,大資料不超過一半。
第3題:t<=30,1<=n<=1000,q<=1000000,-10^6<=ai<=10^6,-10^6<=qi<=10^6,大資料不超過5組。
注意認真比較每題的每個數的資料範圍,然後選擇合適的演算法ac吧。注意不要提交錯題目了。
output
對於每個詢問,輸出乙個整數表示答案
sampleinput
1 5 6
4 5 6 5 4
4 11
1 20
6 10
sampleoutput
2 2
0 2 1 0
思路:很明顯,這是一道計算區間和的題,用字首和來存資料是必須的。但是光是這樣肯定會超時,畢竟1<=n<=10000,所以這時候我們就需要結合雙指標的知識來ac這道題了。
/*
*字首和
*/a[0]=0
;for(i=1
;i<=n;i++)
/*
*雙指標(x為查詢值)
*/i=0,j=1,y=0
;while(i<=j&&j<=n)
}
【演算法總結–陣列相關】雙指標法的常見應用。
預處理優化(字首和)
16級第一周寒假作業B題
timelimit 4000ms memorylimit 128mb 64 bit integer io format i64d problem description 已知在二維空間中有n個點,p0,p1 pn 1 已按照x為第一優先順序,y為第二優先順序從大到小排好序 即若 pi則pi.x in...
16級第一周寒假作業D題
timelimit 1000ms memorylimit 128mb 64 bit integer io format i64d problem description 小a和小c跋山涉水,終於來到了 們要聚集的城市,他們倆在附近找了家賓館住下。這時,距離 們聚會的時間越來越近了,是時候來一波體能訓...
16級第四周寒假作業A題
timelimit 1000ms memorylimit 256mb 64 bit integer io format i64d problem description 有一天,t t來到了師大比賽,看上了師大的acmer小彩,於是他就跑上去想跟人家搭訕,可是呢,這時候,小彩遇到了乙個問題,小彩說,...