#15792: 求這題解法


detaomega (detaomega)

學校 : 國立彰化高級中學
編號 : 70049
來源 : [140.112.251.50]
最後登入時間 :
2024-11-11 21:43:18
c782. PC. 孤單值量測 -- 2018高雄市高師大附中資訊學科能力 | From: [111.82.17.38] | 發表日期 : 2018-10-31 23:22

這題怎樣寫才不會超時

 
#15797: Re:求這題解法 - 參考作法 (真想不到再看吧...)


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
c782. PC. 孤單值量測 -- 2018高雄市高師大附中資訊學科能力 | From: [106.105.27.148] | 發表日期 : 2018-11-01 01:42

這邊提供本人的作法給你參考:  (強烈不建議直接觀看, 真的想不到再反白來看吧...)

首先對N的人的孤單值w[i]做後綴s[i], (O(N)建表後可以O(1)查詢任意後綴和)
接著使用爬行法對於所有左界可以找到距離剛好超過K的區間, (爬行法整體O(N), 故對於所有左界為均攤O(1) )
對於每個找到的區間 i~j 可以發現對於 i 而言 j 以後(包含)的距離都超過K,
所以累加 w[i]*w[j] + w[i]*w[j+1] + ... + w[i]*w[N] ,
提出 w[i] 後就變成 w[i]*(w[j]+w[j+1]+...+w[N]) ,  (後項為後綴和)
即 w[i]*s[j] 故對於每個區間都能O(1)做計算,
最後累加就是答案了~

時間複雜度: 建後綴和+爬行法*計算花費 = O(N)+O(N)*O(1) = O(N)
額外空間複雜度: 後綴和 = O(N)

 

 

以上希望有幫助到你~ OwO

 
#15798: Re:求這題解法


detaomega (detaomega)

學校 : 國立彰化高級中學
編號 : 70049
來源 : [140.112.251.50]
最後登入時間 :
2024-11-11 21:43:18
c782. PC. 孤單值量測 -- 2018高雄市高師大附中資訊學科能力 | From: [42.76.194.145] | 發表日期 : 2018-11-01 09:56

這邊提供本人的作法給你參考:  (強烈不建議直接觀看, 真的想不到再反白來看吧...)
感謝提供想法

首先對N的人的孤單值w[i]做後綴s[i], (O(N)建表後可以O(1)查詢任意後綴和)
接著使用爬行法對於所有左界可以找到距離剛好超過K的區間, (爬行法整體O(N), 故對於所有左界為均攤O(1) )
對於每個找到的區間 i~j 可以發現對於 i 而言 j 以後(包含)的距離都超過K,
所以累加 w[i]*w[j] + w[i]*w[j+1] + ... + w[i]*w[N] ,
提出 w[i] 後就變成 w[i]*(w[j]+w[j+1]+...+w[N]) ,  (後項為後綴和)
即 w[i]*s[j] 故對於每個區間都能O(1)做計算,
最後累加就是答案了~

時間複雜度: 建後綴和+爬行法*計算花費 = O(N)+O(N)*O(1) = O(N)
額外空間複雜度: 後綴和 = O(N)

 

 

以上希望有幫助到你~ OwO




 
ZeroJudge Forum