模拟DNF放技能的蓝耗问题(P2006题题解,Java语言描述)
程序员文章站
2022-07-13 13:46:45
...
题目要求
分析
看来出题人喜欢DNF啊,还对蓝充足颇为渴求 (废话,没蓝干甚) ……
这题貌似水题,但AC率不高,因为有坑诶……
首先是耗蓝为0的时候,伤害还是打的出来的(参考平A)……这将导致RE(除零)或者WA……
还有就是这个迷幻的题意表述啊,真的是……其实它的意思是:我们可以随便选一种技能,随便放,直到蓝不够用,对方假设不伤害我们。每次模拟一种技能,看看有几种技能能符合使用要求。
就是这个意思,其实分析到这里就回归水题本质了,但问题是这破题……ε=(´ο`*)))唉……没啥……看代码就行了~~
StringBuilder,看看,好使吧……多用这个才是正道……
AC代码(Java语言描述)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int max = scanner.nextInt(), num = scanner.nextInt(), min = scanner.nextInt();
long consume, damage;
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= num; i++) {
consume = scanner.nextLong();
damage = scanner.nextLong();
if ((consume == 0 && damage > 0) || (consume > 0 && consume <= max && damage*(max/consume) >= min)) {
builder.append(i).append(" ");
}
}
scanner.close();
if (builder.length() == 0) {
System.out.println(-1);
} else {
System.out.println(builder.toString().trim());
}
}
}