#31929: 分行做前綴和


Q123456 (QQ)

學校 : Massachusetts Institute of Technology
編號 : 30382
來源 : [140.123.112.35]
最後登入時間 :
2024-10-06 16:01:00
a694. 吞食天地二 | From: [140.128.136.154] | 發表日期 : 2022-08-29 15:05

前一題只有一維,所以概念比較簡單一點,說是說DP 動態規劃啥的,其實就是前綴和而已,這邊就直接重講一遍。

e.g. 給一個1*3陣列

編號012
value123

做完前綴和會變成

編號012
value136

如果要算2~3的合就是array[ 3-1 ] - array [ 2-2 ] = array[ 2 ] - array[ 0 ] = 6-1 = 5 ;

如果要算1~3的合必須加上if( 如果編號減2小於0 ) = array[ 3-1 ] - 0 = 6-0 = 6;

只有上述兩種情況:編號扣完會小於0 跟 編號扣完不會小於0兩種。

 

本題的話就是跟前面一樣,只是要一維一維分開做前綴和:

123
4*5*6
7*8*9

做完前綴和:

36
4915
71524

再一行一行下去解即可

如果要算 (1,2)~(3,2) 標 * 號的區域,就是底下的array[ 1 ][ 1 ]  - 0 再加上 array[ 2 ][ 1 ] - 0

 

ps 大維度很考驗個人腦袋性能,兩組(x,y)我已經不太行了,都感覺怪怪的,還需要輔助紙筆運算,再往上多開幾維就真的只能靠一股感覺做了.-.

 
ZeroJudge Forum