P1005 矩陣取數遊戲

2022-03-09 07:43:09 字數 1005 閱讀 8768

p1005 矩陣取數遊戲

區間dp,憨貪心可以過兩個點,

f[l][r]表示l,r這一段都選完的取得的最大得分

f[l][r]=max(f[1+l][r]+a[l],f[l][r-1]+a[r])*2

越靠中間,乘的2越多,列舉區間長度,和左右端點

答案是f[1][m]

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define inf 2147483647

9#define for(i,a,b) for(register __int128 i=a;i<=b;i++)

10#define p(a) putchar(a)

11#define g() getchar()

12//

by war

13//

2017.10.19

14using

namespace

std;

15__int128 n,m;

16 __int128 a[100

];17 __int128 f[110][110

];18

__int128 max;

19__int128 ans;

20void

in(__int128 &x)

2130

while(c<='

9'&&c>='

0')x=x*10+c-'

0',c=g();

31 x*=y;32}

33void

o(__int128 x)

3440

if(x>9)o(x/10

);41 p(x%10+'0'

);42}43

intmain()

4458

o(ans);

59return0;

60 }

view code

P1005 矩陣取數遊戲

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

P1005 矩陣取數

看完題可能第一時間並沒有清晰的思路。讓我們一步一步的來考慮這道題目。題目中描述操作為每次從所有的行中選取,這樣做有些麻煩。仔細思考一下可以發現行與行之間互不干涉,所以我們可以對每行操作到底,最後統計答案。每行怎麼選取當然難不倒聰明的oier了,設f i j 表示某行從第i位到第j位的最優答案。轉移如...

洛谷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...