30pts WA 求助 玄关
查看原帖
30pts WA 求助 玄关
663195
Z_AuTwT楼主2024/8/3 13:05
#include<bits/stdc++.h>
using namespace std;
int dp[10010][1010];
int C[10010][2];
bool book[10010][1010];
main(){
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=0;i<n;i++){
        cin>>C[i][0]>>C[i][1];
    }
    for(int i=1;i<=k;i++){
        int p,l,L;
        cin>>p>>l>>L;
        for(int j=n;L<=m;j--,L++){
            book[p][j]=true;
        }
        for(int j=0;l;j++,l--){
            book[p][j]=true;
        }
    }
    for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) dp[i][j]=1e9;
    for(int i=1;i<=m;i++) dp[0][i]=0;
    int Max=-1;
    for(int i=0;i<n;i++){
        for(int j=1;j<=m;j++){
            if(book[i][j]||dp[i][j]==1e9) continue;
            int ss=j+C[i][0],xj=j-C[i][1];
            if(!book[i+1][min(ss,m)]){dp[i+1][min(ss,m)]=min(dp[i+1][min(ss,m)],dp[i][j]+1);Max=max(Max,i+1);}
            if(xj<1) continue;
            if(!book[i+1][xj]){dp[i+1][xj]=min(dp[i+1][xj],dp[i][j]);Max=max(Max,i+1);}
            //cout<<dp[i][j]<<" "<<dp[i+1][min(ss,m)]<<" "<<ss<<" "<<dp[i+1][xj]<<" "<<xj<<"\n";
        }
    }
    if(Max==n){
        puts("1");
        int Min=1e9;
        for(int i=1;i<=m;i++) if(!book[n][i]) Min=min(Min,dp[n][i]);
        cout<<Min;
    }
    else{
        puts("0");
        cout<<Max;
    }
}
2024/8/3 13:05
加载中...