這道題說是矩陣,實際上每一行之間沒聯絡,所以只需跑n此區間dp就行了.
f[i][j]表示從i~j能獲得的最大分數.
本題唯一難度在於要寫高精度,沒有高精度感覺就是個黃題,本人做的第一道非模板的高精度題.
1 #include2 #include3 #include45using
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次的區間取數問題...