package com.acmcoder.youdao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
int a = scanner.nextInt();
int b = scanner.nextInt();
int []h = new int[n];
for (int i = 0; i < h.length; i++) {
h[i] = scanner.nextInt();
}
int hit = 0;
List<Integer> list = new ArrayList<Integer>();
while(!isOver(h)){
int index = getMaxValIndex(h);
if (index==0) {
h[1]-=a;
h[0]-=b;
h[2]-=b;
hit++;
list.add(2);
}else if (index == n-1) {
h[n-2]-=a;
h[n-1]-=b;
h[n-3]-=b;
hit++;
list.add(n-1);
}else {
h[index]-=a;
h[index-1]-=b;
h[index+1]-=b;
hit++;
list.add(index+1);
}
}
System.out.println(hit);
Object[] listResult = list.toArray();
int [] intResult = new int[listResult.length];
for (int i = 0; i < listResult.length; i++) {
intResult[i]= (int)listResult[i];
}
Arrays.sort(intResult);
for (int i = 0; i < intResult.length; i++) {
System.out.print(intResult[i]+" ");
}
}
}
private static int getMaxValIndex(int[]h){
int index = 0;
int max = h[0];
for (int i = 1; i < h.length; i++) {
int j = h[i];
if (j>max && j>=0) {
max = j;
index = i;
}
}
return index;
}
private static boolean isOver(int []h){
boolean flag = true;
for (int i = 0; i < h.length; i++) {
if (h[i]>=0) {
flag = false;
}
}
return flag;
}
}
/**
最优攻击方式
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB题目描述:小B是个游戏迷,尤其喜欢角色扮演游戏(RPG),她现在正在玩一个风靡全球的RPG游戏。在这个游戏中,她的角色是她最喜欢的魔法师。她已经达到最后一关了,这次的对手是一队弓箭手,共有n个,她唯一能够攻击对手的手段是火球术。如果她击中第i个弓箭手,被击中的弓箭手损失a个HP点,与第i个弓箭手相邻的弓箭手损失b个HP点(1<=b<a<=10)。每个弓箭手的HP点数是确定的,若其HP点数小于0,则该弓箭手被杀死。
弓箭手从1到n依次编号。小B的火球能够击中部分弓箭手,但部分弓箭手由于距离较远,火球无法直接击中。如果某个弓箭手已经被击杀,小B仍然可以攻击他,借以消灭其他弓箭手。为消灭所有的敌人,小B最少需要发出多少记火球术?
输入输入中有多组测试数据。每组测试数据的第一行为有三个整数n, a, b(3<=n <=10, 1<= b < a <=10)。第二行为n个整数构成的序列h1, h2,…,hn(1<=hi<=15),hi为第i个弓箭手的HP点数。
输出对每组测试数据,在单独的一行中输出一个整数t,为最少所需的攻击次数。然后在第二行中输出t个整数,为小B在t次攻击中为消灭所有对手所需攻击的弓箭手位置编号。所有编号应在2至n-1之间,以空格分隔。
由于编号大的弓箭手可能太远无法直接攻击到,若多种方式可以达成相同的效果,小B希望优先攻击距离近(编号小)的弓箭手。
样例输入3 2 1
2 2 2
4 3 1
1 4 1 1
样例输出3
2 2 2
4
2 2 3 3
**/
没有合适的资源?快使用搜索试试~ 我知道了~
online-code-test.zip_java笔试题_mi test code_thyfx8_yearvss
共55个文件
class:27个
java:24个
png:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 11 浏览量
2022-09-24
07:53:53
上传
评论
收藏 93KB ZIP 举报
温馨提示
秋招找工作参加大公司的在线笔试题,题目以及编程答案,采用Java语言编写。
资源推荐
资源详情
资源评论
收起资源包目录
online-code-test.zip (55个子文件)
online-code-test
bin
com
nowcoder
didi
Main1.class 1KB
44731861@chatroom_1474617345240_67.png 22KB
Main.class 2KB
acmcoder
youdao
Main.class 3KB
iqiyi
Main1.class 1KB
Main.class 2KB
creditease
Main.class 581B
sougou
Main.class 3KB
toutiao
Main1.class 1KB
Main.class 1KB
ComString.class 744B
le
Main.class 2KB
Main2.class 1KB
wanmei
Main1.class 398B
PrintThred.class 2KB
Main.class 2KB
mi
Main3.class 1KB
Main.class 1KB
Main2.class 2KB
hihocoder
microsoft
Main.class 1KB
Main2.class 406B
candcode
shengda
Main.class 2KB
ComString.class 744B
lianjia
Main4.class 2KB
Main5.class 1KB
Main3.class 843B
Main.class 1KB
Main2.class 998B
src
com
nowcoder
didi
44731861@chatroom_1474617345240_67.png 22KB
Main1.java 875B
Main.java 859B
acmcoder
youdao
Main.java 4KB
iqiyi
Main1.java 1KB
Main.java 2KB
creditease
Main.java 233B
sougou
Main.java 2KB
toutiao
Main1.java 755B
Main.java 832B
le
Main2.java 635B
Main.java 1KB
wanmei
Main1.java 1KB
Main.java 3KB
mi
Main2.java 2KB
Main3.java 442B
Main.java 883B
hihocoder
microsoft
Main2.java 2KB
Main.java 734B
candcode
shengda
Main.java 1KB
lianjia
Main2.java 564B
Main4.java 870B
Main3.java 373B
Main5.java 560B
Main.java 764B
.project 392B
.classpath 232B
共 55 条
- 1
资源评论
四散
- 粉丝: 49
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功