codeforces 148E
来源:互联网 发布:win10win7共享网络 编辑:程序博客网 时间:2024/06/06 02:00
题意:给你n个架子,每个架子有c个花瓶,每个花瓶有价值,从每个架子拿花瓶的时候只能从最外面部分开始拿(最左端和最右端)你现在要从n个架子里拿m个花瓶,求最大价值
很经典的组合背包模型了,注意预处理出每个架子拿k个花瓶的最大价值,然后都不用二进制优化,直接裸的三方可过
//// Created by Matrix on 2016-01-22// Copyright (c) 2015 Matrix. All rights reserved.//////#pragma comment(linker, "/STACK:102400000,102400000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <sstream>#include <set>#include <vector>#include <stack>#define ALL(x) x.begin(), x.end()#define INS(x) inserter(x, x,begin())#define ll long long#define CLR(x) memset(x, 0, sizeof x)using namespace std;const int inf = 0x3f3f3f3f;const int MOD = 1e9 + 7;const int maxn = 1e4 + 10;const int maxv = 1e3 + 10;const double eps = 1e-9;int dp[105][maxn];int c;int a[maxn];int val[maxn];int suml[maxn];int sumr[maxn];int main() {#ifdef LOCAL freopen("in.txt", "r", stdin);// freopen("out.txt","w",stdout);#endif int n, m; while(scanf("%d%d", &n, &m) != EOF) { memset(dp, 0, sizeof dp); dp[0][0] = 0; for(int i = 1; i <= n; i++) { scanf("%d", &c); for(int j = 1; j <= c; j++) { scanf("%d", &a[j]); } suml[0] = 0; for(int j = 1; j <= c; j++) { suml[j] = suml[j-1] + a[j]; }// for(int j = 1; j <= c; j++) {// printf("suml[%d] = %d\n", j, suml[j]);// } sumr[c+1] = 0; for(int j = c; j > 0; j--) { sumr[j] = sumr[j+1] + a[j]; }// for(int j = 1; j <= c; j++) {// printf("sumr[%d] = %d\n", j, sumr[j]);// } memset(val, 0, sizeof val); for(int l = 0; l <= c; l++) { for(int r = l + 1; r <= c + 1; r++) { int nu = l + c + 1 - r; val[nu] = max(val[nu], suml[l] + sumr[r]); } }// for(int j = 0; j <= c; j++) {// printf("val[%d] = %d\n", j, val[j]);// } for(int j = 0; j <= m; j++) { for(int k = 0; k <= c && k <= j; k++) { dp[i][j] = max(dp[i][j], dp[i-1][j-k] + val[k]); } } } printf("%d\n", dp[n][m]); } return 0;}
0 0
- Codeforces 148E(Porcelain)
- Codeforces 148E. Porcelain
- CodeForces 148E Porcelain
- codeforces 148E
- codeforces-148E Porcelain
- CodeForces 148E – Porcelain
- codeforces 148E Porcelain (dp)
- codeforces-148E-Porcelain【DP】
- Codeforces 148 E Porcelain【dp】
- Codeforces 148 E Porcelain dp
- CodeForces 148E(动态规划)
- codeforces 148E Porcelain 多重背包
- Codeforces 148E Porcelain [预处理+dp背包]
- Codeforces 148E. Porcelain【多重背包】
- CodeForces 148E Porcelain dp+背包(水
- codeforces 148E Porcelain(DP, 分组背包)
- CodeForces 148E Porcelain(dp+背包)
- Codeforces 148E Porcelain (dp)
- MAC 10.10.5编译opencv3.0(java版本)
- Android keystore 的MD5、SHA1值获取方法
- 小乔落花流水
- 嵌入式系统学习入门篇之-----开门探头
- 【Web前端】Js利用正则表达式提取字符串
- codeforces 148E
- 蓝桥杯 01背包
- RunLoop学习
- Eclipse Tomcat配置
- leetcode第17题——**Letter Combinations of a Phone Number
- 欢迎使用CSDN-markdown编辑器
- 1204 寻找子串位置
- cvResize() 图像放缩
- 三种弹窗的解析