【正经题解】龙虎斗
2024-03-15 11:41:46
发布于:浙江
4阅读
0回复
0点赞
这道题的目标是选择一个兵营编号 ,将你手中的工兵 派遣到该兵营,使得轩轩和凯凯双方气势差距尽可能小。下面是解题思路:
初始化: 读取输入,包括兵营的数量 ,每个兵营的初始工兵数量 [ ],以及游戏的相关参数 , , , 。
处理兵营: 将游戏中新增的工兵数量 加到兵营 中。
计算初始气势差距: 计算轩轩和凯凯初始时的气势差距,即双方的气势之和 。
寻找最优兵营编号: 对于每个兵营 ,计算将 工兵派遣到该兵营后的气势差距。选择使得气势差距绝对值最小的兵营编号 ,并记录下来。
输出结果: 输出最优的兵营编号 。
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 100001;
long long c[MAX_N], n, m, s1, p1, s2, p2, qi, mi = LLONG_MAX, p;
int main(){
cin >> n;
// 读取兵营的初始工兵数量
for(int i = 1; i <= n; i++)
cin >> c[i];
cin >> m >> p1 >> s1 >> s2;
c[p1] += s1;
// 计算初始时双方的气势差距
for(int i = 1; i <= n; i++)
qi += c[i] * (m - i);
// 寻找最优的兵营编号
for(int i = 1; i <= n; i++){
long long d = s2 * (m - i);
if(abs(d + qi) < mi){
p = i;
mi = abs(d + qi);
}
}
// 输出选择的兵营编号
cout << p << endl;
return 0;
}
这里空空如也
有帮助,赞一个