试题 历届真题 防御力【第九届】【决赛】【B组】

2024-04-09 14:18

本文主要是介绍试题 历届真题 防御力【第九届】【决赛】【B组】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间限制:1.0s 内存限制:256.0MB
  小明最近在玩一款游戏。对游戏中的防御力很感兴趣。
  我们认为直接影响防御的参数为“防御性能”,记作d,而面板上有两个防御值A和B,与d成对数关系,A=2 ^ d,B=3 ^ d(注意任何时候上式都成立)。
  在游戏过程中,可能有一些道具把防御值A增加一个值,有另一些道具把防御值B增加一个值。
  现在小明身上有n1个道具增加A的值和n2个道具增加B的值,增加量已知。

现在已知第i次使用的道具是增加A还是增加B的值,但具体使用那个道具是不确定的,请找到一个字典序最小的使用道具的方式,使得最终的防御性能最大。

初始时防御性能为0,即d=0,所以A=B=1。
输入格式
  输入的第一行包含两个数n1,n2,空格分隔。
  第二行n1个数,表示增加A值的那些道具的增加量。
  第三行n2个数,表示增加B值的那些道具的增加量。
  第四行一个长度为n1+n2的字符串,由0和1组成,表示道具的使用顺序。0表示使用增加A值的道具,1表示使用增加B值的道具。输入数据保证恰好有n1个0,n2个1。
输出格式
  对于每组数据,输出n1+n2+1行,前n1+n2行按顺序输出道具的使用情况,若使用增加A值的道具,输出Ax,x为道具在该类道具中的编号(从1开始)。若使用增加B值的道具则输出Bx。最后一行输出一个大写字母E。
样例输入
1 2
4
2 8
101
样例输出
B2
A1
B1
E
样例输入
3 0
7 11 13

000
样例输出
A1
A2
A3
E

样例说明对于第一组测试数据,操作过程如下:操作 d A B初始 0 1 1B2 2 4 9A1 3 8 27B1 log3(29) 2^(log3(29)) 29可以证明,这个值是最大的。对于第二组测试数据,可见无论用什么顺序,A最后总为32,即d总为5,B总为243

数据规模和约定
  对于20%的数据,字符串长度<=10000;
  对于70%的数据,字符串长度<=200000;
  对于100%的数据,字符串长度<=2000000,输入的每个增加值不超过2^30。

资源约定:
  峰值内存消耗(含虚拟机) < 256M
  CPU消耗 < 1000ms

思路:
可以确定是贪心求解,并且A中的尽量挑小的先用,B中尽量挑大的先用(如果相同大小就选字典序小的)
设当前d,A,B
Ai为选的A中的道具值;Bi为选的B中的道具值;
d=log2(A+Ai)
且d=log3(B+Bi)
显然A的变化对d的值影响更大,而B对d的影响值较小,所以根据贪心的思想,既然A的变化对d最终值影响大,那我们就把A中较大的道具留到最后使用,而B对d影响小,所以B中尽量先用大的;
(这道题真的很迷,自己可以例举一下A两个B一个的情况,确实是A应该先用小的,B先用大的,最终d会更大)
code:

import java.util.PriorityQueue;
import java.util.Scanner;class Node3 implements Comparable<Node3>{long val;long loc;public Node3(long vv,long ll){this.loc=ll;this.val=vv;}@Overridepublic int compareTo(Node3 o) {if(this.val!=o.val) {if(o.val>this.val)return 1;else if(o.val<this.val)return -1;else return 0;}else {if(this.loc>o.loc)return 1;else if(this.loc<o.loc)return -1;else return 0;}}	
}class Node4 implements Comparable<Node4>{long val;long loc;public Node4(long vv,long ll){this.loc=ll;this.val=vv;}@Overridepublic int compareTo(Node4 o) {if(this.val!=o.val) {if(o.val>this.val)return -1;else if(o.val<this.val)return 1;else return 0;}else {if(this.loc>o.loc)return 1;else if(this.loc<o.loc)return -1;else return 0;}}	
}public class Main {static int n1,n2;public static void main(String[] args) {Scanner in=new Scanner(System.in);n1=in.nextInt();n2=in.nextInt();PriorityQueue<Node4> q1=new PriorityQueue<>();PriorityQueue<Node3> q2=new PriorityQueue<>();for(long i=1;i<=n1;i++) {long val;val=in.nextInt();q1.add(new Node4(val,i));}for(long i=1;i<=n2;i++) {int val;val=in.nextInt();q2.add(new Node3(val, i));}String op=in.next();if(n1!=0&&n2!=0) {for(int i=0;i<op.length();i++) {if(op.charAt(i)=='0') {Node4 nn=q1.remove();System.out.println("A"+nn.loc);}else {Node3 nn=q2.remove();System.out.println("B"+nn.loc);}}System.out.println("E");}else if(n1==0) {for(int i=0;i<n2;i++) {System.out.println("B"+(i+1));}System.out.println("E");}else if(n2==0) {for(int i=0;i<n1;i++) {System.out.println("A"+(i+1));}System.out.println("E");}}
}

这篇关于试题 历届真题 防御力【第九届】【决赛】【B组】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

广东省特殊食品生产试题分享

1.食品污染是指在各种条件下,导致有毒有害物质进入到食物中,造成以下哪项发生转变的过程。(D) A.食品的安全性 B.食品的养分性 C.食品的感官性状 D.以上都是 2.食品污染物是指(D) A.生物性污染物 B.化学性污染物 C.物理性污染物 D.以上都是 3.关于菌落总数的表达,错误的选项是(A) A.反映食品对人体安康的危害程度 B.是食品清洁状态的标志 C.推测食品的耐保藏性 D.指1g检

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

Open Source, Open Life 第九届中国开源年会论坛征集正式启动

中国开源年会 COSCon 是业界最具影响力的开源盛会之一,由开源社在2015年首次发起,而今年我们将迎来第九届 COSCon! 以其独特定位及日益增加的影响力,COSCon 吸引了越来越多的国内外企业、高校、开源组织/社区的大力支持。与一般企业、IT 媒体、行业协会举办的行业大会不同,COSCon 具有跨组织、跨项目、跨社区的广泛覆盖面,也吸引了众多国内外开源开发者和开源爱好者的关注及参与

华为OD机试真题-猜字谜-2024年OD统一考试(E卷)

题目描述 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如 nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下.对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 1、变换顺序以后一样的,比如通过变换 w和e的顺序,“nwes”跟“news”是可以完全对应的: 2、字母去重以后是一样的,比如“woood”和“wood”是一样的,它们去重后都是“wod'请你写一个程序帮忙在

【时时三省】c语言例题----华为机试题< 查找组成一个偶数最接近的两个素数>

山不在高,有仙则名。水不在深,有龙则灵。                                                                         ----CSDN 时时三省 1,题目 HJ60 查找组成一个偶数最接近的两个素数 描述 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个