POJ 3624 Charm Bracelet【01背包入门题】

开发技术 作者: 2024-06-21 00:15:01
Charm Bracelet

Charm Bracelet
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 34333   Accepted: 15215

Description

Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course,she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1 ≤ Wi≤ 400),a 'desirability' factor Di (1 ≤ Di ≤ 100),and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).

Given that weight limit as a constraint and a list of the charms with their weights and desirability rating,deduce the maximum possible sum of ratings.

Input

* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 describes charm i with two space-separated integers: Wi and Di

Output

* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints

Sample Input

4 6 1 4 2 6 3 12 2 7

Sample Output

23

Source

USACO 2007 December Silver

原题链接:http://poj.org/problem?id=3624


01背包入门题,不解释。

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=12880+5; int v[maxn]; int w[maxn]; int dp[maxn]; int main() { int n,m; ios::sync_with_stdio(false); cin.tie(0); //freopen("data/3624.txt","r",stdin); while(cin>>n>>m) { for(int i=0; i<n; i++) cin>>w[i]>>v[i]; memset(dp,sizeof(dp)); for(int i=0; i<n; i++) { for(int j=m; j>=w[i]; j--) { dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } cout<<dp[m]<<endl; } return 0; }



原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_30658.html