洛谷 P1005 矩陣取數遊戲

2022-04-07 00:37:55 字數 1028 閱讀 5230

這道題說是矩陣,實際上每一行之間沒聯絡,所以只需跑n此區間dp就行了.

f[i][j]表示從i~j能獲得的最大分數.

本題唯一難度在於要寫高精度,沒有高精度感覺就是個黃題,本人做的第一道非模板的高精度題.

1 #include2 #include3 #include4

5using

namespace

std;67

int n,m,g[90];8

struct

kkk14 }f[90][90],sum[90

],ans;

1516 kkk operator * (const kkk &a,const

int &b)

25while(x > 0

) 29

return

c;3031}

3233 kkk max(const kkk &a,const kkk &b)

40return

a;41}42

43 kkk operator + (const kkk &a,const kkk &b)

51if(x > 0

)52 c.s[++u] +=x;

53 c.len =u;

54return

c;55

} 56

57 inline void

wo()

6364

intmain()

76kkk a;

77for(int i = 1;i <= m; i++)

78 a = max(a,f[i][i] + sum[m] *g[i]);

79 ans = ans +a;80}

81for(int i = ans.len;i >= 1; i--)

82 printf("%d"

,ans.s[i]);

83return0;

84 }

//noip提高 2007 t3

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

洛谷 P1005 矩陣取數遊戲

沒錯 本齟齬又來水題解了 題目鏈結 給你乙個大小為n m的矩陣,你將進行m次操作,每次操作可以拿矩陣中每一行兩端的其中乙個數字,每個數字只能拿一次。拿乙個數字的貢獻為該數字的權值val 2 i 這個數是在第i次操作被拿走的 然後問在m次操作後最大貢獻和為多少。這道題就很像乙個執行了n次的區間取數問題...