多重背包java版本实现_楼天城男人八题——POJ1742 Coins
题目链接
传说中楼教主的做男人不易八题之一,这题多重背包应该算最简单的一道了
我AC的时候Users (Solved) 有3945了。
关于背包问题可以看 dd_engi 大牛的01背包、完全背包和多重背包三个问题的解法就会做了
本题就是多重背包
java实现如下:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int n, m, re, count[], val[], dp[];
//01背包
static void f_01(int cost, int val) {
for (int i = m; i >= cost; i--)
dp[i] = Math.max(dp[i], dp[i - cost] + val);
}
//完全背包
static void f_full(int cost, int val) {
for (int i = cost; i <= m; i++)
dp[i] = Math.max(dp[i], dp[i - cost] + val);
}
//多重背包
static void f_mul(int cost, int val, int count) {
if (count \* cost >= m) {
f_full(cost, val);
} else {
int k = 1;
while (k < count) {
count -= k;
f_01(k \* cost, k \* val);
k \*= 2;
}
f_01(count \* cost, count * val);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (;;) {
n = sc.nextInt();
m = sc.nextInt();
if (m + n == 0)
return;
re = 0;
dp = new int[m + 1];
//除dp[0]初始化为0外,其他初始化为-∞
Arrays.fill(dp, 1, dp.length, Integer.MIN_VALUE);
val = new int[n + 1];
count = new int[n + 1];
for (int i = 1; i <= n; i++)
val[i] = sc.nextInt();
for (int i = 1; i <= n; i++)
count[i] = sc.nextInt();
for (int i = 1; i <= n; i++)
f_mul(val[i], val[i], count[i]);
for (int i = 1; i <= m; i++)
if (dp[i] == i)
re++;
System.out.println(re);
}
}
}
多重背包java版本实现_楼天城男人八题——POJ1742 Coins相关推荐
- 多重背包java版本实现_多重背包1(java)
有 NN 种物品和一个容量是 VV 的背包. 第 ii 种物品最多有 sisi 件,每件体积是 vivi,价值是 wiwi. 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大. ...
- 【楼天城男人八题】【树分治|Treap+启发式合并】POJ1741 Tree
题面在这里 待我先膜拜一下楼教主-- 首先这题是很明显的树分治 想说点什么却发现已经没什么好说了 然后我们来看另一种解法:平衡树乱搞 这里用的是Treap实现 对于每个节点,用Treap记录该子树每个 ...
- 楼天城男人八题之博弈
woc绝世好题! 大佬博客https://www.cnblogs.com/dramstadt/p/3439725.html #include<cstdio> #include<cst ...
- nyoj-137 取石子(三) (博弈,楼教主真男人八题)
取石子(三) 时间限制: 1000 ms | 内存限制: 1000 KB 难度: 6 描述 小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子. 游戏规则如下:共有N堆石子,已知每堆中石子的数量, ...
- Tiled有java版本吗_【Cocos2d-X开发学习笔记】开发工具之Tiled地图编辑器的使用
Cocos2D-X支持Tiled地图编辑器生成的地图数据文件.Tiled地图编辑器是一个以广泛使用为目标的地图编辑html 器,它使用简单而且能够轻松地在不一样的引擎中使用.目前最新版本使用Qt框架进 ...
- Java版本多用户B2B2C商城源码-(八)消息总线(Spring Cloud Bus)
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...
- 动态规划 背包问题小结 0-1背包(采药 九度第101题) 完全背包(Piggy-Bank POJ 1384) 多重背包(珍惜现在,感恩生活 九度第103题)
本小结介绍0-1背包.完全背包以及多重背包问题 记忆要点: 0-1背包:二维数组情况下,顺序遍历体积或者倒序均可以 降维情况下需倒序遍历体积 完全背包:数组降维+顺序遍历 ...
- 楼教主男人八题(第一题)
楼天城,1986 年出生,高中毕业于杭州十四中. 2004 年保送进清华大学计算机系.2008年进入姚期智院士领导的清华大学理论计算机中心攻读博士. 2017年初,创办小马智行(pony.ai).楼天 ...
- appium java版本错误_升级Appium最新java-client 6.0.0包后-问题来了...
前段时间由于想把自己开源的测试平台LuckyFrame集成移动端的自动化测试,所以选择了Appium,然后把Appium的JAVA客户端更新到java-client 6.0.0-BETA2,发现其中有 ...
最新文章
- Image Generation
- 关于ping telnet
- python目录在哪里_python安装后的目录在哪里
- python列表--查找集合中重复元素的个数
- linux下nginx+python+fastcgi部署总结(web.py版)
- 受控组件和不受控组件的区别
- 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行
- Tensorflow Serving部署tensorflow、keras模型详解
- 流水灯c语言实验报告心得,嵌入式流水灯实验心得体会.docx
- python 文件按行读写
- 树莓派 树莓派 编c++_树莓派6年
- Android 音视频深入 十三 OpenSL ES 制作音乐播放器,能暂停和调整音量(附源码下载)...
- CAD2010 64 位 安装后打开就卡死 解决方案
- CAD文件查看器Acme CAD Converter V 8.10.2.1536【轻松查看CAD】
- 鼎利软件测试终端刷机,你怎样把鼎利路测设备调试好?
- ASP.NET网站制作
- 基于决策树的交通拥堵成因分析
- 书签同步工具android,「效率工具推荐」跨平台在线云书签管理工具
- PDF生成插件--TcPDF
- 计算机科学在本质,人类大脑的本质竟然是计算机?
热门文章
- python多行注释符号快捷键_python多行注释快捷键
- RabbitMQ的消息模型
- esp32 md5加密算法的使用Arduino/esp-idf
- python scipy安装失败的解决方法
- 有关天线与波的极化方向的小结:线极化,圆极化,椭圆极化
- ISO 16750.5-2010道路车辆电子电气部件的环境试验 第五部分
- Hadoop2.x高可用架构
- org.springframework.core.type.AnnotationMetadata.introspect(Ljava/lang/Class;)Lorg/springframework/c
- 全局路由守卫,独享路由守卫,组件内路由守卫
- Myth源码解析系列之五- 服务启动源码解析