• 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 }
  • 相关阅读:
    事件总线Guava EventBus
    DDD—实体和值对象
    DDD—子域和限界上下文
    DDD—什么是领域驱动设计
    DDD—微服务,中台建设为什么需要领域驱动设计
    RabbitMQ 中的 7 种队列模式
    10w 行级别数据的 Excel 导入优化记录
    Java 反射是什么?
    21 条常用 Linux 命令
    一个 java 文件的执行过程
  • 原文地址:https://www.cnblogs.com/wikioibai/p/4508866.html
Copyright © 2020-2023  润新知