龙虎斗游戏:工兵策略优化
#include
int main() {
int n;
cin >> n;
vector
long long sum_l = 0; // 龙方的气势和
long long sum_r = 0; // 虎方的气势和
for (int i = 0; i < n; i++) {
if (i < m - 1) {
sum_l += c[i] * (m - 1 - i);
} else if (i > m - 1) {
sum_r += c[i] * (i - m + 1);
}
}
long long diff = sum_r - sum_l; // 气势差距
int p2 = p1; // 选择的兵营编号
long long min_diff = diff; // 气势差距的最小值
for (int i = 0; i < n; i++) {
if (i != m - 1) {
long long new_sum_l = sum_l; // 新的龙方气势和
long long new_sum_r = sum_r; // 新的虎方气势和
if (i < m - 1) {
new_sum_l -= c[i] * (m - 1 - i);
new_sum_l += (c[i] + s2) * (m - 1 - i);
} else {
new_sum_r -= c[i] * (i - m + 1);
new_sum_r += (c[i] + s2) * (i - m + 1);
}
long long new_diff = new_sum_r - new_sum_l; // 新的气势差距
if (abs(new_diff) < abs(min_diff) || (abs(new_diff) == abs(min_diff) && i < p2 - 1)) {
min_diff = new_diff;
p2 = i + 1;
}
}
}
cout << p2 << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/plwO 著作权归作者所有。请勿转载和采集!