博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈理工oj 1385-Leyni, LOLI and Toasts II解题报告-多重背包的二进制解法
阅读量:4696 次
发布时间:2019-06-09

本文共 1351 字,大约阅读时间需要 4 分钟。

这是这道题的二进制转化的解法,效率明显要高很多

View Code
1 #include
2 #include
3 #define N 100005 4 #define M 18 5 int a[N]; 6 int v[N]; 7 int wei[N]; 8 int max(int a,int b) 9 {10 return a>b?a:b;11 }12 int main()13 {14 int n,m,w,c,t,i,j,k,weight,val;15 int x,y;16 scanf("%d",&t);17 while(t--)18 {19 scanf("%d%d%d%d",&n,&m,&w,&c);20 memset(a,0,sizeof(a));21 int temp=1;22 k=0;23 int t1=n/w;24 while(temp<=t1)25 {26 v[k]=temp*c;27 wei[k++]=temp*w;28 t1-=temp;29 temp<<=1;30 }31 if(t1)32 {33 v[k]=t1*c;34 wei[k++]=t1*w;35 }36 for(i=1;i<=m;i++)37 {38 scanf("%d%d%d%d",&x,&y,&w,&c);39 temp=1;40 t1=x/y;41 while(temp<=t1)42 {43 v[k]=temp*c;44 wei[k++]=temp*w;45 t1-=temp;46 temp<<=1;47 }48 if(t1)49 {50 v[k]=t1*c;51 wei[k++]=t1*w;52 }53 }54 for(i=0;i
=wei[i];j--)56 a[j]=max(a[j],a[j-wei[i]]+v[i]);57 printf("%d\n",a[n]);58 }59 return 0;60 }

 

转载于:https://www.cnblogs.com/caozhenhai/archive/2012/05/03/2481336.html

你可能感兴趣的文章
eclipse 编辑 python 中文乱码的解决方案
查看>>
Python 爬虫的集中简单方式
查看>>
数据库MySQL/mariadb知识点——触发器
查看>>
Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
查看>>
Binary Agents
查看>>
入门Webpack,看这篇就够了
查看>>
如何在数据库中使用索引
查看>>
ring0
查看>>
windows虚拟机下 安装docker 踩过的坑
查看>>
使用 CXF 做 webservice 简单例子
查看>>
2017-2018-1 20155339 《信息安全系统设计基础》第8周学习总结
查看>>
socket.io 消息发送
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
一些有趣的代码
查看>>
Major Performance Impacts
查看>>
读《图解HTTP》有感-(返回结果的HTTP状态码)
查看>>
操作数栈
查看>>
转:文本分类问题
查看>>
tensorflow_python中文手册
查看>>