首页 > 代码库 > codeforces148----E. Porcelain
codeforces148----E. Porcelain
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 const int maxn = 105; 5 int s[maxn];//s[i]表示每行前i个数的和 6 int d[maxn];//d[i]表示每行取i个数时的最大价值 7 int f[10005];//限制数量为k个,往f中背,记录最大价值 8 int n,m,k; 9 int main() 10 { 11 cin >> n >> k; 12 for(int i = 1; i <= n; ++i) 13 { 14 cin >> m; 15 for(int j = 1; j <= m; ++j) 16 { 17 int x; 18 cin >> x; 19 s[j] = x + s[j-1]; 20 } 21 memset(d,0,sizeof d); 22 for(int j = 0; j <= m; ++j) 23 for(int l = 0; l <= j; ++l) 24 if(s[l]+s[m]-s[m+l-j] > d[j]) 25 d[j] = s[l] + s[m] -s[m+l-j]; 26 for(int j = k; j > 0; --j) 27 for(int l = 1; l <= min(j,m); ++l) 28 if(f[j-l]+d[l] > f[j]) 29 f[j] = f[j-l] + d[l]; 30 } 31 cout << f[k] << endl; 32 return 0; 33 }
codeforces148----E. Porcelain
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。