社区讨论
第一个点本地输出正确,但是提交就RE,
P1023[NOIP 2000 普及组] 税收与补贴问题参与者 5已保存回复 20
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 20 条
- 当前快照
- 1 份
- 快照标识符
- @mi6xqyly
- 此快照首次捕获于
- 2025/11/20 12:32 4 个月前
- 此快照最后确认于
- 2025/11/20 15:21 4 个月前
CPP
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
const int maxn = 100000 + 10;
int aim;
int tprice, tamount;
int r = -1, l = maxn - 10;
int amount[maxn];
int k;
int main()
{
cin >> aim;
while (cin >> tprice >> tamount && tprice != -1)
{
amount[tprice] = tamount;
r = max(tprice, r);
l = min(tprice, l);
}
for (int nl = l; nl <= r; nl++)
{
int nr;
for (nr = nl + 1; amount[nr] == 0; nr++);
int k = (amount[nr] - amount[nl]) / (nr - nl);
for (int cur = nl + 1; cur<nr; cur++)
{
amount[cur] = (cur - nl)*k + amount[nl];
}
nl = nr;
}
cin >> k;
for (; amount[r] - k > 0; r++) amount[r + 1] = amount[r] - k;
double minx = -0x3f, maxx = 0x3f;
int cb = l;
for (int cur = l; cur <= r; cur++)
{
double sh = (cb - aim)*amount[aim] + (cur - cb) * amount[cur];
double xi = amount[aim] - amount[cur];
if (xi>0)
{
minx = max(sh / xi, minx);
}
else if (xi<0)
{
maxx = min(sh / xi, maxx);
}
}
minx = ceil(minx);
maxx = floor(maxx);
if (minx <= maxx)
{
int p = abs(minx)<abs(maxx) ? minx : maxx;
cout << p;
}
else cout << "NO SOLUTION";
return 0;
}
A了第二个与第四个点
第一个(样例)与第三个RE
本地开调试器输入未见报错
是Linux和windows下的差别?
回复
共 20 条回复,欢迎继续交流。
正在加载回复...