dp!dp!dp!乙個dp蒟蒻的部落格裡寫滿了dp題,真不知道我之前是怎麼想的……
任意門description
這裡有乙個n*m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意:選出的k個子矩陣不能相互重疊。input
第一行為n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下來n行描述矩陣每行中的每個元素的分值(每個元素的分值的絕對值不超過32767)。output
只有一行為k個子矩陣分值之和最大為多少。sample input
3 2 2sample output 這個**我原來不想寫注釋的,但是真的很難,想了很久都想不出來,還是謝謝吧~qaq1 -3
2 3
-2 3
#include
#include
#include
#include
#include
#include
using
namespace
std;
int n,m,k,a[110][20],f[110][110][20],sum[110][20];
int main()
}memset(f,0,sizeof(f));
if(m==1)}}
printf("%d\n",f[n][1][k]);
}else}}
}//同上原理啦
}printf("%d\n",f[n][n][k]);
}return
0;}
我發誓以後再也不做dp啦。。。 SCOI2005 最大子矩陣
這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣不能相互重疊。輸入格式 第一行為n,m,k 1 n 100,1 m 2,1 k 10 接下來n行描述矩陣每行中的每個元素的分值 每個元素的分值的絕對值不超過32767 輸出格式 只有一行為k個子矩陣...
SCOI2005 最大子矩陣
這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣 不能相互重疊。第一行為n,m,k 1 n 100,1 m 2,1 k 10 接下來n行描述矩陣每行中的每個元素的分值 每個元素的 分值的絕對值不超過32767 只有一行為k個子矩陣分值之和最大為多...
SCOI2005 最大子矩陣
m 1的時候很簡單 不說了。m 2的時候的動態規劃需要討論,有點麻煩。我們設dp i j k 為處理到第i行,已經使用了j個矩陣,這一行採取k的取用方式。其中0表示什麼都不拿。1表示只要左邊的。2表示只要右邊的。3表示兩邊都要,且分開加入矩陣。4表示兩邊都要,放在乙個矩陣中。然後轉移方程可以參見 如...