1342: 消灭怪物
时间限制: 2 Sec 内存限制: 256 MB
题目描述
有水平放置的编号从1到n的n个格子,每个格子中有一个或者多个怪物。你可以在任何一个格子里投下炸弹,这个格子里的怪物都将受到伤害,当每个怪物第一次受到伤害,它会立即移动到相邻的格子(格子n内的怪物只能移动到格子n-1,格子1内的怪物只能移动到格子2),当一个怪物受到两次伤害时,他将彻底被消灭。怪物只有在第一次受到伤害时才一移动,它们自己不会移动。
你要找出消灭所有怪物所需要的最小炸弹数。
输入
第一行:整数T,表示测试实例个数。
对于每组测试实例:
输入一个整数n (2 ≤ n ≤ 100 000) ——表示有n个格子。
输出
每组测试实例输出一行:包括一个整数——消灭所有怪物所需要的最小炸弹数。
样例输入
2 2 3
样例输出
3 4
这个题有点坑,题意说的不太清楚,全靠猜。。。
先补充一下题目:有水平放置的编号从1到n的n个格子,每个格子中有一个或者多个怪物。你可以在任何一个格子里投下炸弹,这个格子里的怪物都将受到伤害,当每个怪物第一次受到伤害,它会立即移动到相邻的格子(格子第n个格子内的怪物只能移动到格子n-1中,格子1内的怪物只能移动到格子2,例如第3个格子中的怪物只能移到第2个格子中,第4个格子中的怪物只能移到第三个格子中),如果当前格子中有从其他格子跳过来的怪物,则该格子中原本的怪物收到伤害时,不能移动,当一个怪物受到两次伤害时,他将彻底被消灭。怪物只有在第一次受到伤害时才一移动,它们自己不会移动。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for (int i = 0; i < a.length; i++) {
int temp = sc.nextInt();
a[i] = temp/2+temp;
}
for (int j = 0; j < a.length; j++) {
System.out.println(a[j]);
}
}
}
/**************************************************************
Problem: 1342
User: 20161514325
Language: Java
Result: 正确
Time:233 ms
Memory:13432 kb
****************************************************************/