欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模拟DNF放技能的蓝耗问题(P2006题题解,Java语言描述)

程序员文章站 2022-07-13 13:46:45
...

题目要求

P2006题目链接
模拟DNF放技能的蓝耗问题(P2006题题解,Java语言描述)
模拟DNF放技能的蓝耗问题(P2006题题解,Java语言描述)

分析

看来出题人喜欢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());
        }
    }
}