社区讨论
88pts求调
P5016[NOIP 2018 普及组] 龙虎斗参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m5zg6roa
- 此快照首次捕获于
- 2025/01/16 22:50 去年
- 此快照最后确认于
- 2025/11/04 11:29 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 100001;
long long int c[N], f[N] = { 0 }, n, m, p1, s1, s2, i, p2;
int main() {
cin >> n;
for (i = 1;i <= n;i++) cin >> c[i];
cin >> m >> p1 >> s1 >> s2;
c[p1] += s1;
for (i = m - 1;i > 0;i--) {
f[i] = f[i + 1] + c[i] * (m - i);
}
for (i = m + 1;i <= n;i++) {
f[i] = f[i - 1] + c[i] * (i - m);
}
//for(int i=1;i<=n;i++)cout<<f[i]<<' '; cout<<endl;
if (f[1] == f[n]) p2 = m;
else if (f[1] > f[n]) {
long long int x1, x2, t1, t2;
x1 = (f[1] - f[n]) / s2;
x2 = x1 + 1;
t1 = s2 * x1 + f[n];
t2 = s2 * x2 + f[n];
if (abs(f[1] - t1) <= abs(f[1] - t2)) p2 = x1;
else p2 = x2;
p2 += m;
if (p2 > n) p2 = n;
}
else {
long long int x1, x2, t1, t2;
x1 = (f[n] - f[1]) / s2;
x2 = x1 + 1;
t1 = s2 * x1 + f[1];
t2 = s2 * x2 + f[1];
if (abs(f[n] - t1) <= abs(f[n] - t2)) p2 = x1;
p2 = m - p2;
if (p2 < 1) p2 = 1;
}
cout << p2;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...