比赛 |
动态规划练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
魅力手镯 |
最终得分 |
100 |
用户昵称 |
CSU_Turkey |
运行时间 |
0.101 s |
代码语言 |
C++ |
内存使用 |
0.39 MiB |
提交时间 |
2017-03-26 19:52:06 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int MAXN=3500,MAXNN=13000;
int max1=-10000000;
int n,w[MAXN],d[MAXN],m,f[MAXNN];
int main()
{
freopen ("charm.in","r",stdin);
freopen("charm.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=0;i<=m;i++)
f[i]=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&w[i],&d[i]);
}
for(int i=1;i<=n;i++)
{
for(int k=m;k>=w[i];k--)
if(f[k-w[i]]+d[i]>f[k])f[k]=f[k-w[i]]+d[i];
} //正放会导致同一个物体被放多次
/*for(int i=1;i<=m;i++)
{
for(int k=1;k<=n;k++)
{
if(i>=w[k]){
f[i]=max(f[i-w[k]]+d[k],f[i]);
}
}
}错误的背包会导致同一个物体被放多次*/
for(int i=1;i<=m;i++)//cout<<f[i]<<" ";
if(max1<f[i])max1=f[i];
cout<<max1;
return 0;
}