hihocoder-Week195-奖券兑换

时间限制:20000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi在游乐园中获得了M张奖券,这些奖券可以用来兑换奖品。

可供兑换的奖品一共有N件。第i件奖品需要Wi张奖券才能兑换到,其价值是Pi。

小Hi使用不超过M张奖券所能兑换到的最大奖品总价值是多少?

输入

第一行两个整数N,M。

接下来N行,每行两个整数Wi,Pi。

对于 50%的数据: 1≤N,M≤1000

对于 100%的数据: 1≤N,M≤105,1≤Pi,Wi≤10。

输出

一行一个整数,表示最大的价值。

样例输入
3 10
2 3
8 8
10 10
样例输出
11 

题解:

  多重背包转化为01背包。可以使用二进制编码法则。将一个较大的数字,拆成C=1+2+4+8+...+2^K+R, 其中R < 2^(K+1) 的组合。

参考来源: http://hihocoder.com/discuss/question/5199

#include <cstdio>
#include <cstring>
#include <cstdlib>
const int MAXN = 30 * 10 * 10; #define max(a, b) (a)>(b)?(a):(b) int M, N, W[MAXN], P[MAXN], mp[11][11], dp[MAXN*MAXN];  int main()
{int p, w, tk; scanf("%d %d", &N, &M); memset( mp, 0, sizeof(mp) ); for(int i=0; i < N; ++i ){scanf("%d %d", &w, &p);  mp[ w ][ p ] += 1; }tk = 0; for(int i=1; i<=10; ++i ) {for(int j = 1; j <= 10; ++j ) {if( mp[i][j] > 0 ) {W[ tk ] = i; P[ tk ] = j;  ++tk; int cur = 1, k = mp[i][j] , cur_bit = 2; while( cur + cur_bit <= k) {W[ tk ] = cur_bit * i; P[ tk ] = cur_bit * j; ++tk; cur += cur_bit; cur_bit *= 2; } if( k > cur){W[ tk ] = ( k - cur ) * i; P[ tk ] = ( k - cur ) * j; ++tk; }} } }  memset( dp, 0, sizeof(dp) ); for(int i=0; i<tk; ++i){for(int j=M; j>=W[i]; --j){dp[j] = max(dp[j], dp[j-W[i]] + P[i]); }}printf("%d\n", dp[M] ); return 0;
}

  

转载于:https://www.cnblogs.com/zhang-yd/p/8674563.html

hihocoder-Week195-奖券兑换相关推荐

  1. php 兑奖券兑换功能_LOL武器大师竞技场 兑奖券兑换限时开放

    小满刚过, ,RNG夺冠庆贺活动在即.武器大师竞技场也将开放兑奖券限时兑换和门票优惠,草莓解说,韩金, ,[不吝赐教],*************)((((---------------+++++++ ...

  2. hihoCoder#1037 : 数字三角形(DP)

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他 ...

  3. hiho一下 第七周 Hihocoder #1043 : 完全背包

    题目1 : 完全背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻 ...

  4. hiho一下 第六周 Hihocoder #1038 : 01背包

    题目1 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时 ...

  5. hiho一下 第五周 Hihocoder #1037 : 数字三角形

    #1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸 ...

  6. 【完整版】蜂群奖券世界系产品全栈开发动态 元宇宙世界城app

    ​蜂群联盟奖券世界APP近期频道改版和上线故宫升阶玩法主要是为接下来的世界系产品做参考和准备.4月将会有4款产品上线:世界城APP(优先) 消消世界APP 潮玩世界APP(优先) 走路世界APP等. ...

  7. PHP 实现积分兑换和大转盘抽奖功能,防超卖

    目录 前情提要 如何不发生超卖现象? 代码如何实现 Redis 锁的实现(悲观锁) 结论 前情提要 前段时间帮客户做了一个线上会议网站,网站实际运营 2 个多月,正常参会用户注册量大概有1万多. 网站 ...

  8. 字节开启员工期权兑换,126美元每股;

    字节跳动将开启员工期权兑换,价格为126美元/股 银柿财经消息,记者从多位字节跳动员工处获悉,字节跳动即将开启2020年度员工期权兑换计划,主要岗位员工可选将年终奖兑换成期权,价格为126美元/股,目 ...

  9. /* * 编程题第四题(20分): 用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案。 */

    题目: /* 编程题第四题(20分): 用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案. */ 我使用java做的 public class ...

  10. hihoCoder 网络流四·最小路径覆盖

    题面带解释 hihoCoder感觉很好. 网络流的精华就是建图 #include<cstdio> #include<iostream> #include<algorith ...

最新文章

  1. android异常相机处理器,Cordova Android Camera-提供非法参数异常
  2. Android日志拦截器,Retrofit2日志拦截器的使用
  3. mysql optimizer组件_MySQL Optimizer
  4. [转] PHP 转义与反转义函数
  5. 深度学习【目标检测】
  6. 阿里业务研发经典案例:另类解法,分布式一致性
  7. 狂人日记学习 之七 三列浮动中间列宽度自适应
  8. 阿里云播放器SDK 不断读取播放事件【内部用】
  9. TS文件合并,这里提供了一点小思路。
  10. 寻迹pid算法 c语言,基于STC12C5A60S2单片机及PID控制算法的气味循迹车设计
  11. 如何提取微信公众号内视频 (高清 无水印)
  12. css绘制三角形以及梯形
  13. 如何使用宝塔搭建个人网站
  14. 【点赞收藏】36个顶级数据分析方法与模型!
  15. 阿卜杜拉国王科技大学的计算机,阿卜杜拉国王科技大学,沙特国王大学开设专业。...
  16. 找软件完全安装手册——【19年3月】各行业软件大全\系统安装、系统装机、软件安装、各种完全手册更新中(来自第一设计群)
  17. tarjan算法与无向图的连通性(割点,桥,双连通分量,缩点)
  18. iOS可复用控件之折线图
  19. 2022飞鱼科技--鱼苗夏令营实习--游戏客户端--一面(已挂)
  20. C语言求任意四边形面积和其关联的三角形面积的关系

热门文章

  1. 鸿蒙生态发布会,新日XC3亮相华为鸿蒙生态大会,这场合作值得期待!
  2. 用于函数优化的一维 (1D) 测试函数
  3. Python实践通过使用XGBoost中的尽早停止【Early Stopping】策略来避免过度拟合
  4. jQuery(3)——如何绑定事件
  5. 计算机应用可分为哪两类,计算机应用简答题
  6. C++ TBB concurrent_unordered_map find() at() return static_cast<size_t>( t ) * internal::hash_multip
  7. DevOps使用教程 华为云(16)git 日志记录 比较2次提交差异
  8. FISCO BCOS log日志设置配置
  9. kubernetes Container、Pod、Replicaset、Service、Deployment、Lable、Statefulset关系和区别
  10. 服务器如果选用CPU