洛谷 P5365 [SNOI2017] 英雄联盟

2024-01-25 02:36

本文主要是介绍洛谷 P5365 [SNOI2017] 英雄联盟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

分析

这题很容易给人带来不是背包的错觉。

设状态 d p i , j dp_{i,j} dpi,j 表示前 i i i 个英雄花费 j j j 元买皮肤的最大方案数,而背包容量就是所有英雄的 k i × t i k_i\times t_i ki×ti 之和。

剩下的基本上就是一个多重背包模板了,转移方程( k k k 为选的物品数量):

d p i , j = max ⁡ ( d p i , j , d p i − 1 , j − k × c i × k ) dp_{i,j}=\max(dp_{i,j},dp_{i-1,j-k\times c_i}\times k) dpi,j=max(dpi,j,dpi1,jk×ci×k)

这里之所以要乘 k k k 是因为如果选了 k k k 个那么这 k k k 个皮肤每个都可以跟前面的方案匹配,获取答案是枚举最少的钱数使得方案数不小于 m m m 即可,当然这里可以用滚动数组优化到 1 1 1 维。

注意

  • long long!!!
  • d p 0 dp_0 dp0 要设为 1 1 1

代码

#include <bits/stdc++.h>
#define debug puts("Y")
#define inf 0x3f3f3f3f
#define int long longusing namespace std;typedef long long ll;
const int N = 5 * 1e5 + 5;
int n, m, V, K[N], c[N], dp[N];signed main() {cin >> n >> m;for (int i = 1; i <= n; i ++) {cin >> K[i];} for (int i = 1; i <= n; i ++) {cin >> c[i];V += K[i] * c[i];}dp[0] = 1;for (int i = 1; i <= n; i ++) {for (int j = V; j >= 0; j --) {for (int k = 0; k <= K[i]; k ++) {if (j >= k * c[i]) {dp[j] = max(dp[j], dp[j - k * c[i]] * k);}}}}int now = 0;for (; now <= V && dp[now] < m; now ++) {}cout << now;return 0;
}

这篇关于洛谷 P5365 [SNOI2017] 英雄联盟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/641822

相关文章

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习

猫猫分享,必须精品 素材代码地址:http://blog.csdn.net/u013357243/article/details/44706671 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果图 源代码 NYViewController的代码 //ps:新建iOS交流学习群:304570962 可以

挤牛奶洛谷uasco

题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。

宝藏!《联盟自控强化班洗髓题库》(青龙篇) 1-9章:甄选部分

本文内容,全部选自自动化考研联盟的:初试《自控强化班洗髓题库》(青龙篇)。 目录 Part1:资料封面&目录 Part2:资料各个章节具体内容 第1章 自动控制的一般概念 第2章 控制系统的数学模型 第3章 线性系统的时域分析 第4章 线性系统的根轨迹法 第5章 线性系统的频域分析法 第6章 线性系统的校正方法 第7章 线性离散系统的分析与校正 第8章 非线性控制系统分析

云联惠涉传!商家联盟再起新秀!某店模式 三年百亿销售额!

大家好,我是吴军,任职于一家致力于软件开发领域的公司,担任产品经理的职位。 今天,我想和大家探讨一下曾经风靡一时的云联惠平台。在其全盛时期,该平台吸引了超过一千万的用户,并且资金规模达到了6000亿的庞大数字。 回想起几年前,云联惠无疑成为了热议的焦点,各种宣传和讨论无处不在。我也对其产生了浓厚的兴趣,并对其进行了初步的探究。 但是,由于当时政策的不确定性,云联惠最终走向了没落,成为

洛谷刷题(7)

P8738 [蓝桥杯 2020 国 C] 天干地支 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊 (wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。 地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、

arm64的windows可以玩英雄联盟

ARM64 架构的 Windows 设备(如搭载 ARM 处理器的 Windows 笔记本)能够运行像《英雄联盟》和 Photoshop 这样的应用,主要归功于微软在 Windows 操作系统中实现的兼容性技术,尤其是针对 x86 应用程序的仿真(emulation)和 ARM64 原生支持的改进。 1. 仿真技术(Emulation) 微软在 Windows 10 和 Windows 11