zoukankan      html  css  js  c++  java
  • codeforces 975C Valhalla Siege

    题意:

    有n个巫师站成一列,每个巫师有自己的血量。

    一个人射箭攻击他们,每次造成若干点伤害,巫师按照给定的顺序承受伤害,如果伤害大了,那么死掉,伤害落到下一个巫师身上。

    如果一轮攻击之后,所有的巫师都死了,那么他们会立即复活。

    给出若干个询问,问每轮攻击之后还剩多少巫师活着。

    思路:

    前缀和加二分,每次伤害累加,大于了总和便归零且复活。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    const int N = 2e5 + 10;
    long long pre[N],a[N];
    int main()
    {
        int n,q;
        scanf("%d%d",&n,&q);
        for (int i = 0;i < n;i++)
        {
            scanf("%lld",&a[i]);
        }
        pre[0] = a[0];
        for (int i = 1;i < n;i++) pre[i] = a[i] + pre[i-1];
        long long ans = 0;
        for (int i = 0;i < q;i++)
        {
            long long b;
            scanf("%lld",&b);
            ans += b;
            if (ans >= pre[n-1])
            {
                printf("%d
    ",n);
                ans = 0;
            }
            else
            {
                int pos = lower_bound(pre,pre+n,ans) - pre;
                long long gg = pre[pos];
                int tt = 0;
                if (gg == ans)
                {
                    tt = n - pos - 1;
                }
                else
                {
                    tt = n - pos;
                }
                printf("%d
    ",tt);
            }
        }
        return 0;
    }
  • 相关阅读:
    mysql BETWEEN操作符 语法
    mysql IN操作符 语法
    mysql LIKE通配符 语法
    mysql TOP语句 语法
    mysql DELETE语句 语法
    mysql Update语句 语法
    mysql INSERT语句 语法
    mysql ORDER BY语句 语法
    mysql OR运算符 语法
    mysql AND运算符 语法
  • 原文地址:https://www.cnblogs.com/kickit/p/8978402.html
Copyright © 2011-2022 走看看