当前位置: 首页 > news >正文

20250726模拟赛T1

20250726模拟赛T1

题目描述

小 Soup 最近迷上了一款游戏:世界征服者。在剧本模式里面,他总是因为没有把控好回合限制导致翻车。现在他模拟了一次简化版的世界征服者局面,要求你求出将敌军所有部队打死的回合最少是多少。

在一开始,小 Soup 有 2 个单位,第 1 个单位每回合可以发动一次攻击造成 a 伤害,第 2 个单位每回合可以发动一次攻击造成 b 伤害。对手有 \(n\)个单位,每个单位的血量为 \(h_i\)。求把这 \(n\) 个单位全部打死(血量降到 0 及以下)的最小回合数 \(ans\)

输入格式

本题包含多组数据。

第一行一个整数 \(t\),代表数据组数。

对于每组数据,第一行三个整数:\(n,a,b\)

接下来一行\(n\)个数,第 ii 个数代表 \(h_i\)

输出格式

仅一个数,代表回合数 \(ans\)

输入输出样例

输入数据 1

2
3 1 2
4 3 2
6 2 3
1 1 4 5 1 4

输出数据 1

3
5

样例 1 解释

以下是对于第一组数据的解释。

第一回合:我方 1 号单位攻击敌方 2 号单位,我方 2 号单位攻击敌方 3 号单位。
第二回合:我方 1 号单位攻击敌方 2 号单位,我方 2 号单位攻击敌方 1 号单位。
第三回合:我方 1 号单位攻击敌方 2 号单位,我方 2 号单位攻击敌方 1 号单位,敌方全军覆没。

样例 2 输入输出

见选手目录下的 conqueror2.inconqueror2.ans

数据规模

设输出的答案为 ansan**s,保证 \(1≤n,a,b,h_i≤10^3,ans≤5×10^3,t≤4,1≤n,a,b,h_i≤10^3,ans≤5×10^3,t≤4\)

测试点 n≤ ans≤ 其他限制 分值
1 10 50 \(a,b,h_i≤10\) 5
2 100 500 \(a,b,h_i≤10\) 5
3~4 200 1000 \(a,b,h_i≤10\) 10
5~7 200 1000 15
8~11 1000 5000 \(a,b,h_i≤10\) 20
12~20 1000 5000 45

题目描述

给定两个固定伤害值 \(a\)\(b\),以及 \(n\) 个敌方单位各自的血量 \(h_i\),每回合可分配这两个伤害源的攻击到任意单位,求消灭所有敌方单位的最小回合数 \(T\)

考场思路做法

当时一开始看到了两个东西打怪兽,完成任务,有次数限制(求次数最小值),就想到了之前做的一道状态设计惊艳我一整天的进程dp:luogu P2224

所以当时第一瞬间就把 \(a\) 用了多少次计入状态,\(b\) 最少用了多少次作为维护的值,另一维度是干掉了前 \(i\) 个也立马可以作为状态,但是当时做到这一步,就想的是设 \(f_{i,j}\) 指干掉前 \(i\) 个怪物,用了 \(j\)\(a\) 时用的 \(b\) 的数量的最小值,然后就想转移。

当时想转移只能多一层枚举 \(k\) 也就是说大概要和当前这个怪用了 \(k\)\(a\) 这玩意有关系,而且不能被覆盖,所以转移是 \(O(ans)\) 的,那么总时间复杂度应该是 \(O(ans^2 \times n \times T)\) 算下来 \(1e10\) 已经爆炸了,然后就想能不能 \(O(1)\) 转移,就想到了多设一维当前怪物的剩余血量就能 \(O(1)\) 转移。然后就以为自己想到了正解就写了,写完之后跑大样例发现怎么 \(a,b,h_i\) 是好几百,然后仔细一看体面发现我把最后一个特殊性质看成了整个题的数据范围,也就是我以为 \(a,b,h_i \le 10\) 的,然后就不会优化了

正解及反思

其实考场上已经基本上想出来正解了,就是第一个想法,然后观察转移方程式,拆开它就可以发现有一个东西可以用线段树维护,把转移做到 \(O(log_2\,n)\) 级别的,然后可以刚刚卡过。还有一个小孩哥的奇妙快速做法,薄纱std,我要先研究一下再来写

这道题我没有优化出来的根本原因是我设计的状态完全无法支持优化。状态总数都是 \(o(n^3)\) 级别的,再怎么优化转移也做不到优化,且三个维度之间完全独立,无法像之前的洛谷P5664那道题可以把两维作差优化到1维。

而且这次考试中我式子推出来了,但大样例一直有一个点有问题,最后才发现是边界问题,遍历少了一点,所以说之后写dp的时候一定要注意转移时的边界问题!

http://www.sczhlp.com/news/1050/

相关文章:

  • element plus table 修改勾选中的背景颜色
  • Java使用直接内存的好处
  • Jenkins Pipeline 中的主要组件解释
  • 在powershell窗口执行npm install无法运行
  • SVC总结与思考
  • 国产高精度芯片LHA8961,代替AD7690
  • 【IEEE出版、往届均完成EI检索】第六届计算机视觉与数据挖掘国际学术会议(ICCVDM 2025)
  • 平衡树的一些记录和带插入区间K小值
  • 基于块匹配的全景图像拼接
  • 【ACM独立出版、EI快速稳定检索】第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • BMP图像原理与应用
  • 亚马逊AI模型评估产品评论中的实用建议有效性
  • DNS协议
  • Python数据结构(列表、字典、元祖)
  • C#调用邮箱应用发送带附件的邮件
  • Air780EGH定位开发速成指南:源代码公开,即学即用
  • Splunk Enterprise 10.0.0 发布,新增功能简介
  • Studio 3T 2025.13 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-24- 操作Select下拉选择框 - 上篇(详细教程) - 北京
  • delphi7 中文企业版编译minipad2
  • 【PCIE725-1 】基于 PCIe x16 总线架构的 JFM9VU9P FPGA 高性能数据预处理平台(100%国产化)
  • Prometheus源码专题【左扬精讲】—— 监控系统 Prometheus 3.4.0 源码解析:Discovery 动态服务发现机制
  • 在运维工作中,Docker的运行状态有哪些?
  • BZOJ 4641 题解
  • APP UI自动化元素定位高频问题
  • 通义灵码保姆级教程:从数据读取、清洗、结合大模型分析、可视化、生成报告全链路
  • 在运维工作中,docker file 用什么构建容器的?
  • 一维光栅结构严格耦合波分析(RCWA)求解器
  • rust学习笔记之基础:类型系统和类型转换
  • 在运维工作中,Docker的基本命令有哪些?