救命,75pts,wa #3、#6、#9、#11、#13
查看原帖
救命,75pts,wa #3、#6、#9、#11、#13
401978
reisen_楼主2022/8/13 11:20
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pb push_back
#define eb emplace
#define fi first
#define se second
#define comp complex<double>
typedef pair<int,int>P;
const double esp = 1e-8;
const int maxn = 1e4 + 7;
const int inf  = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int base = 2333;
int x[maxn], y[maxn];
int l[maxn], r[maxn];
int dp[maxn][1003];
bitset<maxn>vis;
int  main() {
    int n, m, k;
    scanf("%d%d%d", &n, &m, &k);
    r[0] = m + 1;
    l[0] = 0;
    for(int i = 1; i <= n; i++){
        scanf("%d%d", &x[i], &y[i]);
        r[i] = m + 1;
        l[i] = 0;
    }
    memset(dp, inf, sizeof dp);
    for(int i = 1; i <= m; i++)dp[0][i] = 0;
    for(int i = 1; i <= k; i++){
        int p;
        scanf("%d", &p);
        scanf("%d%d", &l[p], &r[p]);
        vis[p] = 1;
    }
    for(int i = 1; i <= n; i++){
        for(int j = l[i - 1] + 1; j < r[i - 1]; j++){
            if(j + x[i] <= m)
                dp[i][j + x[i]] = min(dp[i][j + x[i]], dp[i - 1][j] + 1);
            else 
                dp[i][m] = min(dp[i][m], dp[i - 1][j] + 1);
        }
        for(int j = l[i - 1] + 1 + x[i]; j <= m; j++){
            dp[i][j] = min(dp[i][j - x[i]] + 1, dp[i][j]);
        }
        for(int j = 1; j <= m; j++){
            if(j + y[i] < r[i - 1] && j + y[i] > l[i - 1])
                dp[i][j] = min(dp[i - 1][j + y[i]],dp[i][j]);
        }
    }
    int ans = 0, cnt = 0;
    for(int i = 1; i < n; i++){
        bool flag = 0;
        for(int j = l[i] + 1; j < r[i]; j++){
            if(dp[i][j] < inf)
                flag = 1;
        }

        if(!flag)break;

        cnt = i;
        if(vis[i]) ans++;
    }
    if(cnt == n - 1) {
        ans = inf;
        for(int i = 1; i <= m ; i++){
            ans = min(ans, dp[n - 1][i]);
        }
        printf("1\n%d\n",ans);
    } 
    else printf("0\n%d\n", ans);
    return 0;
}

调了一上午了,qwq。

2022/8/13 11:20
加载中...