我哪里错了,75,求求
查看原帖
我哪里错了,75,求求
524191
Man_CCNU楼主2023/3/7 20:36
#include<iostream>
#include<cstring>

using namespace std;

const int N = 1e4 + 10;

int f[10000+10][3000+10],up[N],down[N], n, m, k,res;
bool ff[N];

struct node {
    int l;
    int r;
}a[N];

bool check(int i, int j)
{
    if (ff[i]) {
        return j > a[i].l && j < a[i].r;
    }
    
    return true;
}
int main()
{
    freopen("C:\\Users\\HP\\Desktop\\P1941_7.in", "r", stdin);
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) {
        cin >> up[i] >> down[i];
    }
    for (int i = 1; i <= k; i++) {
        int pos;
        cin >> pos;
        ff[pos] = 1;
        cin >>a[pos].l >> a[pos].r;
    }
    memset(f, 0x3f3f3f3f, sizeof f);
    for (int i = 1; i <= m; i++) {
        f[0][i] = 0;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = up[i]; j <= m; j++) {
            if (check(i,j)) {
                f[i][j] = min(f[i][j], f[i - 1][j - up[i]]+1);
                f[i][j] = min(f[i][j], f[i][j - up[i]] + 1);
                if (j == m) {
                    for (int k = m-up[i]; k <= m; k++) {
                        f[i][j] = min(f[i][j], f[i - 1][k] + 1);
                        f[i][j] = min(f[i][j], f[i][k] + 1);
                    }
                }
            }
        }
        for (int j = 1; j <= m; j++) {
            if (check(i, j)) {
                f[i][j] = min(f[i][j], f[i - 1][j + down[i]]);
            }
        }
    }
    res = 0x3f3f3f3f;
    for (int i = 1; i <= m; i++) {
        res = min(res, f[n][i]);
    }
    if (res != 0x3f3f3f3f) {
        cout << 1 << endl;
        cout << res << endl;
    }
    else {
        for (int i = n - 1; i >= 1; i--) {
            for (int j = 1; j <= m; j++) {
                if (f[i][j] != 0x3f3f3f3f) {
                    cout << 0 << endl;
                    res = 0;
                    for (int k = i; k >= 1; k--) {
                        if (ff[k]) {
                            res++;
                        }
                    }
                    cout << res << endl;
                    return 0;
                }
            }
        }
    }

    return 0;
}
2023/3/7 20:36
加载中...