codeforces 189A Cut Ribbon
2015-01-29 17:18
253 查看
很简单的一道题,暴力就行了,我这里用背包dp来做。本题是一道完全背包。
0-1背包的状态转移方程:dp[i][j]表示用前j容量装前i件物品,dp[i][j]=max(dp[i-1][j-v[i]]+w[i],dp[i-1][j]),可省略第一维,循环必须V:v-0;
完全背包:dp[i][j]=max(dp[i-1][j],dp[i][j-v[i]]+w[i]),可省略第一维,循环V:0-v;
若问恰好装满,可初始化dp[0]=0,dp[i]=-inf;
二维:
0-1背包的状态转移方程:dp[i][j]表示用前j容量装前i件物品,dp[i][j]=max(dp[i-1][j-v[i]]+w[i],dp[i-1][j]),可省略第一维,循环必须V:v-0;
完全背包:dp[i][j]=max(dp[i-1][j],dp[i][j-v[i]]+w[i]),可省略第一维,循环V:0-v;
若问恰好装满,可初始化dp[0]=0,dp[i]=-inf;
二维:
#include<iostream> #include<string> #include<cstring> #include<cstdio> #include<cmath> #include<iomanip> #include<map> #include<algorithm> #include<queue> #include<set> #define inf 10000000 #define pi acos(-1.0) #define eps 1e-8 #define seed 131 using namespace std; typedef pair<int,int> pii; typedef unsigned long long ULL; typedef long long LL; const int maxn=100005; int dp[4][4005]; int main() { int d[4]; int n; scanf("%d%d%d%d",&n,&d[1],&d[2],&d[3]); dp[0][0]=0; for(int i=1;i<=n;i++) dp[0][i]=-inf; for(int i=1;i<=3;i++) { for(int j=0;j<=n;j++) { dp[i][j]=-inf; if(dp[i-1][j]>=0) dp[i][j]=max(dp[i][j],dp[i-1][j]); if(j-d[i]>=0&&dp[i][j-d[i]]>=0) dp[i][j]=max(dp[i][j],dp[i][j-d[i]]+1); } } cout<<dp[3] ; return 0; }一维:
#include<iostream> #include<string> #include<cstring> #include<cstdio> #include<cmath> #include<iomanip> #include<map> #include<algorithm> #include<queue> #include<set> #define inf 10000000 #define pi acos(-1.0) #define eps 1e-8 #define seed 131 using namespace std; typedef pair<int,int> pii; typedef unsigned long long ULL; typedef long long LL; const int maxn=100005; int dp[4005]; int main() { int d[4]; int n; scanf("%d%d%d%d",&n,&d[1],&d[2],&d[3]); dp[0]=0; for(int i=1;i<=n;i++) dp[i]=-inf; for(int i=1;i<=3;i++) { for(int j=0;j<=n;j++) { //dp[j]=max(dp[j],dp[j]); if(j-d[i]>=0) dp[j]=max(dp[j],dp[j-d[i]]+1); } } cout<<dp ; return 0; }
相关文章推荐
- CodeForces 189A Cut Ribbon
- CodeForces 189A Cut Ribbon
- CodeForces 189A Cut Ribbon
- 【codeforces】 466C Number of Ways
- CodeForces 589 J Cleaner Robot
- codeforces-305A Strange Addition
- codeforces 9C 数位DP做法
- Codeforces 3A-Shortest path of the king(BFS打印路径)
- 【CodeForces】601 D. Acyclic Organic Compounds
- Codeforces 467C George and Job
- Codeforces 605D. Board Game (BFS+线段树套SBT+离散化)
- codeforces水题100道 第八题 Codeforces Round #274 (Div. 2) A. Expression (math)
- CodeForces 261B Maxim and Restaurant 解法汇总
- CodeForces - 815E - Karen and Neighborhood
- Codeforces 896A
- 【构造】 Codeforces 468A 24 Game
- codeforces 300E. Empire Strikes Back (math+midfind)
- codeforces水题100道 第十八题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table (brute force)
- 【Codeforces 754 B Ilya and tic-tac-toe game】
- Codeforces 580A - Kefa and First Steps