洛谷1005 矩陣取數遊戲

2022-04-28 20:30:17 字數 775 閱讀 3696

傳送門

思路:首先當然是每行單獨處理 再把答案相加

我們發現如果知道還沒有取數的區間長度 就知道現在取了多少個數

也就是說我們可以知道現在要取的數做貢獻要乘的係數

每次取數只能在左右兩端取 所以轉移的時候在這兩種情況中取min即可

記蒐會很方便啊

code:

1 #include2 #include3 #include4

using

namespace

std;

5int

read()610

while(ch>='

0'&&ch<='

9')

11return x*y;12}

13 __int128 n,m,a[100

],ans;

14 __int128 f[100][100],p[100

];15 __int128 dfs(int l,int r) //

從l到r的區間16

22void

print(__int128 x)

2328

intmain()

2939

if(ans==0) cout<

;40print(ans);

41return0;

42 }

view code

洛谷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次的區間取數問題...