zoukankan      html  css  js  c++  java
  • CF1435E Solo mid Oracle(推柿子)

    Meka-Naruto玩电脑游戏。他的角色具有以下能力:给予敌方英雄,对其立即造成伤害,然后在使用该技能之后的一秒内,在每秒结束时,准确地治疗敌人b的生命值,精确到c秒。这意味着,如果在时间t使用此能力,则由于此能力,敌人的生命值会在时间t减少a,然后在时间点t + 1,t + 2,...,t + c增加b。

    该技能的冷却时间为d秒,即。 e。如果Meka-Naruto在时刻t使用它,那么下次他可以使用它的时间是t + d。请注意,他只能在整数时间使用该异能,因此对敌人生命值的所有更改也只会在整数时间发生。

    该能力的不同使用可能会相互叠加。也就是说,当前处于k法术下的敌人这次获得的治疗量为k⋅b。另外,如果同时发生多个健康更改,则将它们全部计数一次。

    现在,梅卡·纳鲁托​​想知道他是否可以通过在每次可能的时间内(即每d秒)仅使用该能力杀死敌人。如果敌人的生命值变为0或更低,就会被杀死。假设除了梅卡·火影忍者的性格能力之外,敌人的健康没有受到任何其他影响。敌人可以拥有多少点生命值,以使梅卡-鸣人能够杀死它们?

    输入值
    第一行包含一个整数t(1≤t≤105),代表测试用例的数量。

    每个测试用例都用一行包含四个数字a,b,c和d(1≤a,b,c,d≤106)描述,这些数字分别表示即时损坏的数量,每秒的恢复量,恢复的数量和能力冷却。

    输出量
    如果技能可以杀死具有任意数量生命值的敌方英雄,则在单独的行中为每个测试用例打印-1,否则打印可以被杀死的敌人的最大生命值。

    #include<bits/stdc++.h>
    using namespace std;
    long long a,b,c,d;
    int t;
    int main () {
        scanf("%d",&t);
        while (t--) {
            scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
            if (a>b*c) {
                printf("-1
    ");
                continue;
            }
            long long tt=a/(d*b);
            long long ans=(tt+1)*a-tt*(tt+1)/2*d*b;
            printf("%lld
    ",ans);
        }
    }
  • 相关阅读:
    python 小爬虫
    动态规划,网易秋招
    leetcode 3
    leetcode 27 水
    leetcode 21 list merge
    leetcode 15 3sum & leetcode 18 4sum
    leetcode 389 map iterator 的使用
    [转]使用flask实现mock server
    python __str__repr__ 区别
    Robot Framework 源码阅读 day2 TestSuitBuilder
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13884764.html
Copyright © 2011-2022 走看看