144. [USACO Dec07] 魅力手镯
★ 输入文件:charm.in
输出文件:charm.out
简单对比
时间限制:1 s
内存限制:8 MB
译 by CmYkRgB123
描述
贝茜去了大卖场的珠宝商店,发现一个魅力手镯,她想把最好的宝石镶嵌在这条手镯上。她有 N (1 ≤ N ≤ 3,402) 种可用宝石,每种宝石 i
都有其重量 Wi (1 ≤ Wi ≤ 400),与价值 Di (1 ≤ Di ≤ 100),每种宝石最多只能用一次。贝茜只能把总重量不超过 M
(1 ≤ M ≤ 12,880)的宝石镶嵌到手镯上。
给你每个宝石的重量和价值,请你算出贝茜最多能把总价值为多大的宝石镶嵌到手镯上。
输入
- 第 1 行: 两个整数 N , M
- 第 2..N+1 行: 第 i+1 行 有两个整数, Wi 和 Di
输出
- 第 1 行: 一个整数,为镶嵌的宝石的总价值。
样例输入
4 6
1 4
2 6
3 12
2 7
样例输出
23
Pascal
C
C++
C
C++
分析:01背包纯裸题,复习一下,又忘记了!
下面给出AC代码:
#include <bits/stdc++.h>
using namespace std;
int w[],d[],dp[];
int main()
{
int n,m;
freopen("charm.in","r",stdin);
freopen("charm.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d%d",&w[i],&d[i]);
for(int i=;i<=n;i++)
for(int j=m;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]+d[i]);
cout<<dp[m]<<endl;
return ;
}