F. Magic Will Save the World(DP)

news2025/1/21 9:36:54

Problem - F - Codeforces

黑暗势力的传送门在世界边界打开了,现在整个世界都面临着可怕的威胁。为了关闭传送门并拯救世界,你需要一个接一个地击败n个从传送门中出现的怪物。

只有女巫Vika能够应对这个威胁。她有两个魔法力量——水之魔法和火之魔法。Vika每秒可以生成w单位的水魔法能量和f单位的火魔法能量。她需要能量来施放法术。初始时,Vika没有水魔法和火魔法能量。

从传送门中出现的每个怪物都有自己的力量,用一个正整数表示。为了击败第i个力量为si的怪物,Vika需要施放一个至少具有相同力量的水系或火系法术。换句话说,Vika可以花费至少si单位的水魔法能量来施放水系法术,或者至少si单位的火魔法能量来施放火系法术。

Vika可以立即创建和施放法术。只要她有足够的能量,她可以每秒施放无数次法术。

女巫希望尽快拯救世界,因此告诉她需要多少时间。

输入

每个测试包含多个测试用例。每个测试的第一行包含一个整数t(1≤t≤100),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数w和f(1≤w,f≤109),表示Vika每秒可以生成的水魔法和火魔法能量。

每个测试用例的第二行包含一个整数n(1≤n≤100),表示怪物的数量。

每个测试用例的第三行包含n个整数s1,s2,s3,…,sn(1≤si≤104),表示怪物的力量。

保证所有测试用例中n的总和不超过100。

输出

对于每个测试用例,输出一个整数,表示Vika击败所有怪物所需的最短时间(秒)。

Example

Input

Copy

 

4

2 3

3

2 6 7

37 58

1

93

190 90

2

23 97

13 4

4

10 10 2 45

Output

Copy

3
2
1
5

题解:

我们可以dp求出在魔法为i时,是否可以全部利用为i的魔法

只有这种情况才能求出最优解,

总共需要的魔法量为sum为怪物生命值的总和

根据数据范围,sum最大为1e6

当i = 0~1e6,并且此时魔法可以完全被利用

会有两种情况,

f利用i,w利用sum - i 两者所用t取最大

同理或者w利用i,f利用sum - i

所有最优情况再取最小即可

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> PII;
const int N = 5e5 + 10;
int a[N];
int dp[N*2];
void solve()
{
	int n,w,f;
	cin >> w >> f >> n;
	int sum = 0;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
		sum += a[i];
	}
	
	memset(dp,0,sizeof dp);
	dp[0] = 1;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1e6;j >= a[i];j --)
		{
			dp[j] |= dp[j - a[i]];
		}
	}
	int ans = 1e9;
	for(int i = 0;i <= 1e6;i++)
	{
		if(dp[i])
		{
			ans = min(ans,max((i + w - 1)/w,(sum - i + f - 1)/f));
			ans = min(ans,max((i + f - 1)/f,(sum - i + w - 1)/w));
		}
	}
	cout << ans <<"\n";
} 
//
signed main()
{
	int t = 1;
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> t ;	
	while(t--)
	{
		solve();
	}
}
//70 30 90
//100 90

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

口袋参谋:淘宝卖家必备的淘词分析神器!

​在淘宝天猫上&#xff0c;每天都有数以亿计的商品在上面交易&#xff0c;在这个巨大的市场中&#xff0c;如何让自己的商品脱颖而出&#xff0c;成为卖家们关心的问题之一。 因此关键词的挑选就显得尤为重要&#xff0c;好的关键词&#xff0c;一天的搜索量可达上万&#xf…

模拟实现字符串函数和内存函数

模拟实现字符串函数和内存函数 函数介绍部分模拟实现strlenstrcpy,strcat,strcmpstrncpy,strncat,strncmpstrstr,strtokstrerror 字符分类函数内存函数memcpy,memmove,memset,memcmp 求字符串长度(strlen)长度不受限制的字符串函数(strcpy,strcat,strcmp)长度受限制的字符串函数…

数据结构与算法之分治法

文章目录 前言1.递归解决阶乘函数2.归并排序算法2.1 归并排序的概念2.2 分治法的三步曲2.3 归并排序的动画2.4 归并排序算法(C语言代码) 3.最大子序列和问题3.1 问题的定义3.2 分治的思路3.3 简单的分解下代码的结果3.4 算法代码3.5 测试结果 前言 分治法首先需要明白递归的概…

Ubuntu18.04遇到的nodejs的坑记录

Ubuntu18.04安装nodejs的正确姿势 问题回顾 给我的博客网站整上代码高亮插件&#xff0c;在本地运行一切完美&#xff0c;可在我的Ubuntu18.04 bionic版本服务器上运行却报了以下的错误 ERROR in ./node_modules/highlight.js/lib/languages/xml.js Module parse failed: Er…

安装最新版React devtool

1.按照官方文档执行 我这里只想在项目里安装&#xff0c;因此执行的 npm install react-devtools^4 2.安装完成后&#xff0c;在 package.json里加入启动命令 "script": {"dev": "react-devtools" }执行npm run dev会弹出一个窗口 如果是全局…

Redis从简单到高级的总结(超详细)

Redis简单 1、Redis Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。**官网&#xff1a;**https://redis.io **中文网&#xff1a;**https://www.redis.net.cn/ **key-value结构存储&#xff1a;****主要特点&#xff1a;**- 基…

Vue3 监听属性-watch

文章目录 Vue3 监听属性-watch1. 概念2. 实例2.1 通过使用 watch 实现计数器2.2 千米与米之间的换算2.3 异步加载中使用 watch2.4 小计 Vue3 监听属性-watch 1. 概念 Vue3 监听属性 watch&#xff0c;可以通过 watch 来响应数据的变化。 watch 的作用&#xff1a;用于监测响应…

Navicate操作说明

Navicate介绍 源自百度百科 “Navicat”是一套可创建多个连接的数据库管理工具&#xff0c;用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库 操作文档 1.想找出某字段同时满足多个值&#xff0c;比如id值为7或8的记录 方…

pcl--第二节 深度图像RangeImage

从点云创建深度图 目前深度图像的获取方法有激光雷达深度成像法&#xff0c;计算机立体视觉成像&#xff0c;坐标测量机法&#xff0c;莫尔条纹法&#xff0c;结构光法等等&#xff0c;针对深度图像的研究重点主要集中在以下几个方面&#xff0c; 深度图像的分割技术深度图像…

G. The Great Equalizer

Problem - G - Codeforces 思路&#xff1a;通过它给定的这个操作&#xff0c;我们能够发现操作的本质&#xff0c;在排序后&#xff0c;其实每次操作之后&#xff0c;都会把相邻的两个数的差值减少1&#xff0c;所以最大的操作次数就是相邻的最大的差值&#xff0c;并且这个是…

Pytorch学习:torch.max()

文章目录 torch.max()dimkeepdimdim0dim1 out&#xff1a;返回命名元组 (values, indices) torch.max() torch.max(input) → Tensor&#xff1a;返回 input 张量中所有元素的最大值。 注意输入的必须是张量形式&#xff0c;输出的也为张量形式 当输入为tuple类型时&#xf…

如何写营销软文?写营销软文需要注意什么?

营销软文是企业推广产品或服务的重要手段之一。一篇优秀的营销软文能够吸引读者的关注并引起他们的购买欲望&#xff0c;进而增加转化率。本文伯乐网络传媒将分享如何写好营销软文&#xff0c;以及注意事项&#xff0c;帮助您提升营销软文的效果。 一、明确目标受众和营销目标 …

基于SSM的汽车租赁系统

基于SSM的汽车租赁系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 管理员&#xff1a;用户管理、汽车…

【LeetCode题目详解】第十章 单调栈part01 739. 每日温度 ● 496.下一个更大元素 I (day58补)

本文章代码以c为例&#xff01; 一、力扣第739题&#xff1a;每日温度 题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。…

[Google DeepMind] LARGE LANGUAGE MODELS AS OPTIMIZERS

Large Language Models as Optimizers 文章链接 总体架构Optimization by PROmpting (OPRO)&#xff1a;最开始输入meta-prompt&#xff0c;这个初始的meta-prompt基本上只是对优化任务进行了描述(也会有few-shot example)。输入后LLM便会生成一个solution&#xff0c;这个sol…

解决SpringMVC在JSP页面取不到ModelAndView中数据

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 问题描述 ModelAndView携带数据跳转到指定JSP页面后在该页面通过EL表达式取不到原本存放在ModelAndView中的数据。 问题原因 在IDEA中创建Maven工程时web.xml中默认的约束…

贝叶斯网络实战(附代码)

贝叶斯网络实战 1. 建立虚拟环境2. 学生是否获得推荐信3. 泰坦尼克数据集预测存活人员参考 1. 建立虚拟环境 conda create -n BayesNN38 python3.8 conda activate BayesNN38 pip install pgmpy2. 学生是否获得推荐信 代码如下&#xff1a; from pgmpy.models import Bayesia…

Spring Boot集成EasyExcel实现数据导出

在本文中&#xff0c;我们将探讨如何使用Spring Boot集成EasyExcel库来实现数据导出功能。我们将学习如何通过EasyExcel库生成Excel文件&#xff0c;并实现一些高级功能&#xff0c;如支持列下拉和自定义单元格样式&#xff0c;自适应列宽、行高&#xff0c;动态表头 &#xff…

处理:对于移动类型Z21和帐户8051010100 供应商货物移动 (014)的不同的字段选择

对于移动类型Z21和帐户8051010100 供应商货物移动 (014)的不同的字段选择 消息编号 M7093 诊断 来自 移动类型Z21和 总帐科目8051010100的字段选择串的比较显示了在一点或更多点处有不兼容的字段选择组合。 字段选择不同的字段&#xff1a;供应商货物移动 范例 在移动类型屏幕上…

JavaScript逻辑题:输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,这个数就称为完数。

// 定义函数function judgeNum(){// 定义数组存储完数let arr []// for循环1000以内的所有数for(let i 1;i<1000;i){// 定义sum存储一个数的因子之和let sum 0;// 内层循环一个数的因子for(let j 1;j<i;j){if(i % j 0){sum j;}}// 如果一个数和它的因子之和相等&am…