社区讨论
40分,求调!
P5016[NOIP 2018 普及组] 龙虎斗参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mkqyvg4v
- 此快照首次捕获于
- 2026/01/23 22:19 4 周前
- 此快照最后确认于
- 2026/01/24 15:13 4 周前
CPP
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN = 1e5;
int n, c[MAXN + 10], q[MAXN + 10], m, p1, s1, s2, ql, qr;
int main(void)
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> c[i];
}
cin >> m >> p1 >> s1 >> s2;
for(int i = 1;i <= n;i++)
{
q[i] = c[i] * abs(m - i);
if(i < m){ql += q[i];}
if(i > m){qr += q[i];}
}
if(p1 < m){ql += s1 * abs(m - p1);}
if(p1 > m){qr += s1 * abs(m - p1);}
int minid = -1;
if(ql > qr)
{
minid = (ql - qr) / s2 + m;
if(abs(qr + (minid - m) * s2 - ql) > abs(qr + (minid - m + 1) * s2 - ql)){minid++;}
if(abs(qr + (minid - m) * s2 - ql) > abs(qr + (minid - m - 1) * s2 - ql)){minid--;}
}
else
{
minid = (qr - ql) / s2;
if(abs(ql + (m - minid) * s2 - qr) > abs(ql + (m - minid + 1) * s2 - qr)){minid++;}
if(abs(ql + (m - minid) * s2 - qr) > abs(ql + (m - minid - 1) * s2 - qr)){minid--;}
}
cout << minid << endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...