多重背包的模型,但一开始直接将N个物品一个一个拆,拆成01背包竟然T了!!好吧OI过后多久没看过背包问题了,翻出背包九讲看下才发现还有二进制优化一说。。。。。。。。就是将n个物品拆成系数:1,2,4,8....*物品价值和空间的物品,在这题中只要乘上money[i]就行了,从二进制考虑发现,这样可以组成0~n中所有的数

#include <iostream>

#include <cstdio>

#include<string.h>

using namespace std;

int max(int a,int b)

{

if(a>b)return a;else return b;

}

int main()

{

int cash,n,t,dp[100009]={0},money[200]={0},mone;

while(scanf("%d",&cash)!=EOF)

{

memset(dp,0,sizeof(dp));

scanf("%d",&n);

dp[0]=1;

int cnt=0;

for(int i=1;i<=n;i++)

{

scanf("%d%d",&t,&mone);

int k=1;

while(t-k>=0)

{

money[++cnt]=k*mone;

t-=k;

k<<=1;

}

if (t>0)money[++cnt]=t*mone;

}

for(int i=1;i<=cnt;i++)

{

for(int j=cash;j>=money[i];j--)

if (dp[j-money[i]])dp[j]=1;

}

while(dp[cash]==0)

{

cash--;

}

printf("%d\n",cash);

}

return 0;

}

最新文章

  1. pixi.js webgl库
  2. ping过程
  3. JQuery中的小技巧,,,连载中。。。
  4. ubuntu 双屏问题的解决方案
  5. swift 个人笔记
  6. 结构体dict_table_t
  7. freeswitch 拨号时添加自定义变量
  8. POJ-3468-A Simple Problem with Integers(区间更新,求和)-splay或线段树
  9. 性能测试之LoardRunner工作原理
  10. Math中的floor,round和ceil方法总结
  11. 20145232 韩文浩 《Java程序设计》第8周学习总结
  12. Hadoop基础-Map端链式编程之MapReduce统计TopN示例
  13. Ionic2开发环境搭建
  14. Scrum立会报告+燃尽图(Final阶段第三次)
  15. Android API之android.os.Parcelable
  16. IntelliJ IDEA Java项目中添加jar包
  17. js中apply详解
  18. PHP的高效率写法
  19. CSS中cursor属性给标签加上小手形状
  20. NSSize 尺寸

热门文章

  1. Excel数据直接到DataTable---&gt;DB
  2. AJPFX简述Java中this关键字的使用
  3. [ HEOI 2016 ] 树
  4. (转)Synopsys工具简介
  5. 实战角度比较EJB2和EJB3的架构异同
  6. Elasticsearch 插入地理索引文档一直为空
  7. 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存
  8. oracle补丁类型
  9. Python3基础教程(十九)—— 项目结构
  10. PHP安全之 register_globals