Evanyou Blog 彩带
扩大
缩小

洛谷 P5016 龙虎斗

输入兵营总数、兵营人数、以m分界。

然后输入s1个兵到了p1兵营。 最终我们要求的是把s2个兵放到哪个兵营使龙虎双方气势差距最小。

第一要把每个兵营的气势算出来,并且加到它所属的阵营里(<m是龙,>m是虎,属于m不是龙也不是虎)

然后就是考虑天降神兵了,它们到达的兵营所属阵营判断条件和上面一样

最后我们一个一个考虑把手中p2个兵放到哪个兵营最好。

code:

#include <cstdio>
#include <climits>

typedef long long LL;

const int N = 100010;

int n, m, p1;
LL c[N], s1, s2;

LL ABS(LL x) { return x < 0 ? -x : x; }

int main() {
    //freopen("fight.in", "r", stdin);
    //freopen("fight.out", "w", stdout);

    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
        scanf("%lld", &c[i]);
    }
    scanf("%d%d%lld%lld", &m, &p1, &s1, &s2);
    LL sum = (m - p1) * s1, best = LLONG_MAX; int k = -1;
    for (int i = 1; i <= n; ++i) {
        sum += (m - i) * c[i];
    }
    for (int i = 1; i <= n; ++i) {
        LL tmp = ABS(sum + (m - i) * s2);
        if (tmp < best) {
            best = tmp;
            k = i;
        }
    }
    printf("%d\n", k);

    return 0;
}
posted @ 2018-12-15 16:55  yi_heng  阅读(373)  评论(0编辑  收藏  举报