洛谷 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;
}
如果大家满意就关注我吧!