社区讨论

P1016:第五个点WA,为什么啊(看到很多人问这个问题)

P1016[NOIP 1999 普及组/提高组] 旅行家的预算参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo8aluqa
此快照首次捕获于
2023/10/27 15:29
2 年前
此快照最后确认于
2023/10/27 15:29
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
struct yz {
    float md, mp;
}a[5000];
int main() {
    float d, c, dl, p;
    int n;
    cin >> d >> c >> dl >> p >> n;
    for (int i = 1; i <= n; i++) cin >> a[i].md >> a[i].mp;
    a[0].md = 0;
    a[0].mp = p;
    a[n + 1].md = d;
    a[n + 1].mp = 0;
    float ans = 0, you = c;
    for (int i = 1; i <= n + 1; i++) {
        you -= (a[i].md - a[i - 1].md) / dl;
        if (you < 0) {
            cout << "No Solution";
            return 0;
        } else you = c;
    }
    int j;
    for (int i = 0; i <= n; i=j) {
        for (j = i + 1; j <= n + 1; j++) {
            if (c * dl < a[j].md - a[i].md) {
                j--;
                break;
            }
            if (a[j].mp < a[i].mp)break;
        }
        ans += a[i].mp * ((a[j].md - a[i].md) / dl);
    }
    printf("%.2f",ans);
    return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...