洛谷 P1005 矩陣取數遊戲(區間DP)

2022-04-06 18:09:35 字數 587 閱讀 1360

會發現每一行之間沒有影響,可以做n次區間dp。

設dp[i][j]表示區間[i,j]的取分最大值。如果從小區間向大區間轉移,即

dp[i][j]=max(dp[i+1][j]+a[i],dp[i][j-1]+a[j])*2

這樣$2^i$在轉移的過程中便之間乘上了。

ac**(無高精):

1 #include2 #include3 #include4

using

namespace

std;

5 typedef long

long

ll;6

const

int n=90;7

intn,m;

8ll ans;

9int

a[n];

10ll f[n][n];

11int

main()

20 ans+=f[1

][m];21}

22 printf("

%lld

",ans);

23return0;

24 }

ac**

洛谷 P1005 矩陣取數遊戲 區間dp

帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n times mn m的矩陣,矩陣中的每個元素a ai,j 均為非負整數。遊戲規則如下 每次取數時須從每行各取走乙個元素,共nn個。經過mm次後取完矩陣內所有元素 每次取走的各個元素只能是該元素所在行的行首或行尾 每次取數都有乙個得分值,為每行取數的...

洛谷p1005矩陣取數遊戲

原題 2 80超int,需要高精度計算,也可以int128.行和行之間沒有聯絡,所以只要單獨求每一行之後取和即可,dp過程中i,j分別表示左端點和右端點。include define lll int128 void print lll x int n,m lll ans 0 int a 100 ll...

洛谷 P1005 矩陣取數遊戲

好多題解的f i j 表示還剩 i j 沒取的最大值,如果這樣寫的話,最後還要取個max f i i a i 2 m 如果轉化一下題意來做也是可以的。include define int int128 不會高精,只能 int128水一波了,如果考試考到,也只能放棄了 using namespace ...