zoukankan      html  css  js  c++  java
  • Day1-XDoj-1062

    题目描述


    一天,lw梦见自己在打dota,然而对面是一个加强过的卡尔!于是,他每次都被n个技能瞬间秒杀。愤怒的lw决定买BKB,来加强生存力。

    由于加强过的卡尔是电脑操作的,他每次看见lw时,只会以1毫秒的时间间隔连续放n个技能,第i个技能造成ki点伤害。如果某个技能没有成功放出来,他也不会试图再次释放该技能。已知lw的BKB可以为他提供t毫秒的魔免时间(即,能抵挡连续的t个技能),那么BKB至多能降低多少伤害呢?

    输入

    多组数据(不超过10组)。

    每组数据,第一行2个整数n、t,第二行n个整数k1,k2,...,kn,用空格分割。

    数据保证1<=n<=100000,1<=t<=10000,0<=ki<=1000。

    输出

    输出1行,一个整数,表示BKB能避免的最大伤害。

    样例输入

    5 3
    1 2 3 4 5

    样例输出

    12

    提示

    对于样例,最优策略显然是用BKB抵挡掉后3个技能。

    思路:求连续k子段最大和,每次移动一格即可,注意t>n的情况即可

    代码:

    const int maxm = 100002;
    
    int buf[maxm];
    
    int main() {
        int n, t;
        while(scanf("%d%d", &n, &t) != EOF) {
            int ans = 0, tmp = 0;
            for (int i = 0; i < n; ++i) {
                scanf("%d", &buf[i]);
                if (i < t)
                    tmp += buf[i];
            }
            int l = 0, r = t;
            ans = tmp;
            while(r < n) {
                tmp += buf[r++], tmp -= buf[l++];
                ans = max(tmp, ans);
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    MongoDB
    前端框架之vue初步学习
    mysql再回首
    oracle之回顾二
    oracle再回首
    springboot之对之前的补充
    springCloud学习
    springboot-ssm的pom.xml
    MyCat
    11.Java反射机制 哦对了,前面的序号来自随笔关于编程之路的思索第一篇
  • 原文地址:https://www.cnblogs.com/GRedComeT/p/11214076.html
Copyright © 2011-2022 走看看