P4774 [NOI2018] 屠龙勇士

2023-10-25 03:20
文章标签 勇士 屠龙 p4774 noi2018

本文主要是介绍P4774 [NOI2018] 屠龙勇士,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#1024程序员节征文活动


[NOI2018] 屠龙勇士

搬题面:

[NOI2018] 屠龙勇士

题目描述

小 D 最近在网上发现了一款小游戏。游戏的规则如下:

  • 游戏的目标是按照编号 1 → n 1 \rightarrow n 1n 顺序杀掉 n n n 条巨龙,每条巨龙拥有一个初始的生命值 a i a_i ai 。同时每条巨龙拥有恢复能力,当其使用恢复能力时,它的生命值就会每次增加 p i p_i pi ,直至生命值非负。只有在攻击结束后且当生命值 恰好 0 0 0 时它才会死去。
  • 游戏开始时玩家拥有 m m m 把攻击力已知的剑,每次面对巨龙时,玩家只能选择一把剑,当杀死巨龙后这把剑就会消失,但作为奖励,玩家会获得全新的一把剑。

小 D 觉得这款游戏十分无聊,但最快通关的玩家可以获得 ION2018 的参赛资格,于是小 D 决定写一个笨笨的机器人帮她通关这款游戏,她写的机器人遵循以下规则:

  • 每次面对巨龙时,机器人会选择当前拥有的,攻击力不高于巨龙初始生命值中攻击力最大的一把剑作为武器。如果没有这样的剑,则选择 攻击力最低 的一把剑作为武器。
  • 机器人面对每条巨龙,它都会使用上一步中选择的剑攻击巨龙固定的 x x x 次,使巨龙的生命值减少 x × A T K x \times ATK x×ATK
  • 之后,巨龙会不断使用恢复能力,每次恢复 p i p_i pi 生命值。若在使用恢复能力前或某一次恢复后其生命值为 0 0 0 ,则巨龙死亡,玩家通过本关。

那么显然机器人的攻击次数是决定能否最快通关这款游戏的关键。小 D 现在得知了每条巨龙的所有属性,她想考考你,你知道应该将机器人的攻击次数 x x x 设置为多少,才能用最少的攻击次数通关游戏吗?

当然如果无论设置成多少都无法通关游戏,输出 − 1 -1 1 即可。

输入格式

第一行一个整数 T T T,代表数据组数。

接下来 T T T 组数据,每组数据包含 5 5 5 行。

  • 每组数据的第一行包含两个整数, n n n m m m ,代表巨龙的数量和初始剑的数量;
  • 接下来一行包含 n n n 个正整数,第 i i i 个数表示第 i i i 条巨龙的初始生命值 a i a_i ai
  • 接下来一行包含 n n n 个正整数,第 i i i 个数表示第 i i i 条巨龙的恢复能力 p i p_i pi
  • 接下来一行包含 n n n 个正整数,第 i i i 个数表示杀死第 i i i 条巨龙后奖励的剑的攻击力;
  • 接下来一行包含 m m m 个正整数,表示初始拥有的 m m m 把剑的攻击力。

输出格式

一共 T T T 行。

i i i 行一个整数,表示对于第 i i i 组数据,能够使得机器人通关游戏的最小攻击次数 x x x ,如果答案不存在,输出 − 1 -1 1

样例 #1

样例输入 #1

2
3 3
3 5 7
4 6 10
7 3 9
1 9 1000
3 2
3 5 6
4 8 7
1 1 1
1 1

样例输出 #1

59
-1

提示

更多样例

更多样例请在附加文件中下载。

样例 2

见附加文件中的 dragon2.indragon2.ans

样例 1 解释

第一组数据:

  • 开始时拥有的剑的攻击力为 { 1 , 9 , 10 } \{1,9,10\} {1,9,10},第 1 1 1 条龙生命值为 3 3 3,故选择攻击力为 1 1 1 的剑,攻击 59 59 59 次,造成 59 59 59 点伤害,此时龙的生命值为 − 56 -56 56,恢复 14 次后生命值恰好为 0 0 0,死亡。

  • 攻击力为 1 1 1 的剑消失,拾取一把攻击力为 7 7 7 的剑,此时拥有的剑的攻击力为
    { 7 , 9 , 10 } \{7,9,10\} {7,9,10},第 2 条龙生命值为 5 5 5,故选择攻击力为 7 7 7 的剑,攻击 59 59 59 次,造成 413 413 413 点伤害,此时龙的生命值为 − 408 -408 408,恢复 68 68 68 次后生命值恰好为 0 0 0,死亡。

  • 此时拥有的剑的攻击力为 { 3 , 9 , 10 } \{3,9,10\} {3,9,10},第 3 3 3 条龙生命值为 7 7 7,故选择攻击力为 3 3 3 的剑,攻击 59 59 59 次,造成 177 177 177 点伤害,此时龙的生命值为 − 170 -170 170,恢复 17 17 17 次后生命值恰好为 0,死亡。

  • 没有比 59 59 59 次更少的通关方法,故答案为 59 59 59

第二组数据:
不存在既能杀死第一条龙又能杀死第二条龙的方法,故无法通关,输出 − 1 -1 1

子任务

测试点编号 n n n m m m p i p_i pi a i a_i ai攻击力其他限制
1 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1
2 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1
3 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105
4 ≤ 1 0 5 \le 10^5 105 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105
5 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105特性 1、特性 2
6 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105特性 1、特性 2
7 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 3 \le 10^3 103 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105特性 1、特性 2
8 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
9 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
10 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
11 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
12 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
13 = 1 =1 =1 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106特性 1
14 = 1 0 5 =10^5 =105 = 1 0 5 =10^5 =105 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106无特殊限制
15 = 1 0 5 =10^5 =105 = 1 0 5 =10^5 =105 = 1 =1 =1 ≤ 1 0 8 \le 10^8 108 ≤ 1 0 6 \le 10^6 106无特殊限制
16 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105所有 p i p_i pi 是质数 ≤ 1 0 12 \le 10^{12} 1012 ≤ 1 0 6 \le 10^6 106特性 1
17 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105所有 p i p_i pi 是质数 ≤ 1 0 12 \le 10^{12} 1012 ≤ 1 0 6 \le 10^6 106特性 1
18 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105无特殊限制 ≤ 1 0 12 \le 10^{12} 1012 ≤ 1 0 6 \le 10^6 106特性 1
19 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105无特殊限制 ≤ 1 0 12 \le 10^{12} 1012 ≤ 1 0 6 \le 10^6 106特性 1
20 ≤ 1 0 5 \le 10^5 105 ≤ 1 0 5 \le 10^5 105无特殊限制 ≤ 1 0 12 \le 10^{12} 1012 ≤ 1 0 6 \le 10^6 106特性 1

特性 1 是指:对于任意的 i i i a i ≤ p i a_i \le p_i aipi

特性 2 是指: lcm ⁡ ( p i ) ≤ 1 0 6 \operatorname{lcm}(p_i) \le 10^6 lcm(pi)106,即所有 p i p_i pi最小公倍数 不大于 1 0 6 10^6 106

对于所有的测试点, T ≤ 5 T \le 5 T5,所有武器的攻击力 ≤ 1 0 6 \le 10^6 106,所有 p i p_i pi 的最小公倍数 ≤ 1 0 12 \le 10^{12} 1012

保证 $ T, n, m $ 均为正整数。

提示

你所用到的中间结果可能很大,注意保存中间结果的变量类型。


注意不要读错题, x x x 为固定数值。
根据题意可列得

{ b 1 x ≡ a 1 ( m o d p 1 ) b 2 x ≡ a 2 ( m o d p 2 ) … b n x ≡ a n ( m o d p n ) \begin{cases}b_1x\equiv a_1(\mod p_1)\\b_2x\equiv a_2(\mod p_2)\\\dots\\b_nx\equiv a_n(\mod p_n)\end{cases} b1xa1(modp1)b2xa2(modp2)bnxan(modpn)

注意到 p i p_i pi 并不互质,用扩展中国剩余定理求解,模拟抽剑的过程可以用平衡树维护,也可以使用vector/multimap 维护。

这篇关于P4774 [NOI2018] 屠龙勇士的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

万龙觉醒辅助:屠龙攻略大全!VMOS云手机带你组团抓龙!

在《万龙觉醒》中,使用VMOS云手机能够为玩家提供专属定制版的云手机,不仅内置游戏安装包,还无需重新下载安装游戏。这一切都让玩家的游戏体验更加便捷和高效。VMOS云手机能够辅助游戏的自动化运行,支持24小时云端运行,同时还能无限多开,让玩家在多个账号之间无缝切换。此外,VMOS云手机支持安卓、iOS、PC、网页端多端互通,即使是低配手机,也能够畅玩《万龙觉醒》中的各大场景,享受极致的游戏体

腾讯《地下城与勇士:起源》手游在部分安卓平台停止更新

原标题:因合约到期 《DNF手游》停止安卓平台更新   易采游戏网6月19日消息:《地下城与勇士:起源》(简称DNF手游)官方今天公告,因合作协议到期,自6月20日起,该游戏将不再在某些安卓应用商店提供。腾讯公司已经向华为、OPPO、vivo以及小米发送了正式通知,告知这四大渠道的DNF手游将不再更新。此外,有报告指出,《地下城与勇士:起源》已经从vivo应用商店中下架。   DNF手

《地下城与勇士》新手攻略,开荒必备!云手机多开教程!

《地下城与勇士》(DNF)是一款广受欢迎的多人在线动作角色扮演游戏。玩家将在游戏中扮演不同职业的角色,通过打怪、做任务、PK等方式不断提升自己,探索广阔的阿拉德大陆。游戏中设有丰富的副本、装备、技能系统,玩家可以通过各种活动获取装备和道具,提升自己的战斗力。 在游戏中,除了做好攻略之外,还要学会借助辅助工具节省时间,提升效率,接着大家一起去看看怎样操作: 在VMOS云手机官网中创建自己需要的端

DNF手游攻略:勇士进阶指南!

在即将到来的6月5日,《DNF手游》将迎来一场盛大的更新,此次更新带来了大量新内容和玩法,极大丰富了游戏的体验。本文将为广大玩家详细解析此次更新的亮点,包括新增的组队挑战玩法“罗特斯入门团本”、新星使宠物的推出、宠物进化功能的开放,以及六月下旬即将到来的李小龙联动内容。无论你是新手玩家还是资深老玩家,这篇攻略都将为你提供全方位的指导和建议,助你在新版本中迅速上手,收获最佳游戏体验。 一、

做算法是屠龙,做工程是狩猎,做数据是养猪!

近来一段时间,能明显感到,想入行 AI 的人越来越多,而且增幅越来越大。 缘起 为什么这么多人想入行 AI 呢?真的是对计算机科学研究或者扩展人类智能抱着无限的热忱吗?说白了,大多数人是为了高薪。 人们为了获得更高的回报而做出选择、努力工作,原本这是个非常正当的事情,但是关键在于:如何找对路径。 想要入行,总得知道这个行业里面都有什么样的岗位,分别是干什么的吧。 本文中,我们将从直观

【NOI2018模拟4.4】Map

Description Rin是个特别好动的少女。 一天Rin来到了一个遥远的都市。这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其中某些街道首尾相连连接成了一个环。Rin通过长时间的走访,已经清楚了这个都市的两个特点: 从市中心出发可以到达所有的建筑物。 任意一条街道最多存在与一个简单环中。令Rin心花怒放的是,每个建筑

三维偏序问题【NOI2018模拟3.28】Subset

三维偏序问题请看下面 Description Input 第一行一个正整数 n 第二行 n 个数字,表示排列 a i 第三行 n 个数字,表示排列 b i 第四行 n 个数字,表示排列 c i Output 一行一个整数,表示答案 Sample Input 8 1 7 5 3 4 8 2 6 3 1 2 7 4 8 5 6 6 3 4 5 8 2 1 7 Sampl

【NOI2018模拟3.26】Cti

Description 有一个 n × m 的地图, 地图上的每一个位置可以是空地, 炮塔或是敌人. 你需要操纵炮塔消灭敌人. 对于每个炮塔都有一个它可以瞄准的方向, 你需要在它的瞄准方向上确定一个它的攻击位置,当然也可以不进行攻击. 一旦一个位置被攻击, 则在这个位置上的所有敌人都会被消灭. 保证对于任意一个炮塔, 它所有可能的攻击位置上不存在另外一个炮塔. 定义炮弹的运行轨迹为炮弹的起

剖析勇士如何成为新赛季夺冠热门:基于Spark GraphFrames的金州勇士传球网络分析

databricks 最近发布了 GraphFrames,这是一个用 DataFrames 封装图处理过程的Spark插件。 我评估了网络分析并且利用丰富的NBA.com的数据对金州勇士的传球网络进行可视化。 金州勇士的传球网络 传接球 联盟 MVP Stephen Curry 接到了大多数的传球,而团队中的 MVP Draymond Green则发动了最多的传球。

蓝桥杯练习系统(算法训练)ALGO-949 勇士和地雷阵

资源限制 内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s 问题描述   勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,'*'表示某个位置埋有地雷,'-'表示某个位置是安全的),他们各自需要在规定的步数(一步代表走到和当前位置相邻的位置)内绕开地雷到达出口(第一行第一格,即坐标为(0,0)的位置)才能完成任