樹塔狂想曲 NOIP2016提高A組模擬9 3

2021-07-22 09:43:29 字數 1364 閱讀 1288

相信大家都在長訓班學過樹塔問題,題目很簡單求最大化乙個三角形數塔從上往下走的路徑和。走的規則是:(i,j)號點只能走向(i+1,j)或者(i+1,j+1)。如下圖是乙個數塔,對映到該數塔上行走的規則為:從左上角的點開始,向下走或向右下走直到最底層結束。

1 3 8

2 5 0

1 4 3 8

1 4 2 5 0

路徑最大和是1+8+5+4+4 = 22,1+8+5+3+5 = 22或者1+8+0+8+5 = 22。

小s覺得這個問題so easy。於是他提高了點難度,他每次ban掉乙個點(即規定哪個點不能經過),然後詢問你不走該點的最大路徑和。

當然他上乙個詢問被ban掉的點過乙個詢問會恢復(即每次他在原圖的基礎上ban掉乙個點,而不是永久化的修改)。

樣例輸入:

第一行包括兩個正整數,n,m,分別表示數塔的高和詢問次數。

以下n行,第i行包括用空格隔開的i - 1個數,描述乙個高為n的數塔。

而後m行,每行包括兩個數x,y,表示第x行第y列的數塔上的點被小s ban掉,無法通行。(由於讀入資料較大,c或c++請使用較為快速的讀入方式)

5 3

1 3 8

2 5 0

1 4 3 8

1 4 2 5 0

2 2

5 4

1 1樣例輸出:

17 22

-1正向與反向dp一遍,可以得出從上和從下到乙個點的距離,分別用f,g兩個陣列表示。那麼總和就是f[i][j]+g[i][j]-a[i][j]。

顯然每一行只會經過乙個點,那麼刪去乙個點後,這一行只可能是刪去最大值或者是非最大值,如果刪去了最大值,我們輸出次大值即可,否則輸出最大值。

所以預處理出每一行的最大值和次大值就可以了。

NOIP提高組模擬 樹塔狂想曲

相信大家都在長訓班學過樹塔問題,題目很簡單求最大化乙個三角形數塔從上往下走的路徑和。走的規則是 i,j 號點只能走向 i 1,j 或者 i 1,j 1 如下圖是乙個數塔,對映到該數塔上行走的規則為 從左上角的點開始,向下走或向右下走直到最底層結束。1 3 82 5 0 1 4 3 8 1 4 2 5...

樹塔狂想曲

2017年09月23日普級組 樹塔狂想曲 time limit 40000ms memory limit 256000k total submit 24 accepted 11 case time limit 2000ms description 相信大家都在長訓班學過樹塔問題,題目很簡單求最大化乙...

樹塔狂想曲tower

樹塔狂想曲 tower 問題描述 相信大家都在長訓班學過樹塔問題,題目很簡單求最大化乙個三角形數塔從上往下走的路徑和。走的規則是 i,j 號點只能走向 i 1,j 或者 i 1,j 1 如下圖是乙個數塔,對映到該數塔上行走的規則為 從左上角的點開始,向下走或向右下走直到最底層結束。1 3 8 2 5...