zoukankan      html  css  js  c++  java
  • POJ 3624 Charm Bracelet (01背包)

    Charm Bracelet
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 26078   Accepted: 11726

    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

     

     

    解题思路:

      又是一道01背包的模板题,其实只要把握清楚思想就好了,用一维来搞,用二维会爆掉。。。

     

    代码:

     1 # include<cstdio>
     2 # include<iostream>
     3 # include<cstring>
     4 
     5 using namespace std;
     6 
     7 # define MAX 3555
     8 
     9 int a[MAX],b[MAX];
    10 int dp[MAX*MAX];
    11 
    12 int main(void)
    13 {
    14     int n,m;
    15     while ( scanf("%d%d",&n,&m)!=EOF )
    16     {
    17         memset(dp,0,sizeof(dp));
    18         for ( int i = 0;i < n;i++ )
    19         {
    20             scanf("%d%d",&a[i],&b[i]);
    21         }
    22         for ( int i = 0;i < n;i++ )
    23         {
    24             for ( int j = m;j >= a[i];j-- )
    25             {
    26                 dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
    27             }
    28         }
    29         printf("%d
    ",dp[m]);
    30 
    31     }
    32 
    33     return 0;
    34 }
  • 相关阅读:
    希尔排序算法
    java面向对象的栈 队列 优先级队列的比较
    java不用任何已有方法完全自写的去重法
    java面向对象的冒泡排序,选择排序和插入排序的比较
    java面向对象的有序数组和无序数组的比较
    Truncated incorrect DOUBLE value:
    laradock 安装多php版本
    graph-composer, 面向 composer.json的依赖图可视化( PHP + Composer )
    php基础
    php通过curl调用webservice
  • 原文地址:https://www.cnblogs.com/wikioibai/p/4508866.html
Copyright © 2011-2022 走看看