洛谷 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;
}

转载于:https://www.cnblogs.com/yihengblog/p/10123872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值