1 条题解

  • 1
    @ 2026-8-31 16:55:59

    服了滚动数组洛谷上能过这里60

    看题解优化

    只展示60的代码洛谷能过最慢139ms

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define lowbit(x) x&-x
    const int INF=0x3f3f3f3f3f3f3f3f;
    const int N=5e2+10;
    const int M=2e6+10;
    vector<int>g[N];
    int n,m,mm;
    int a[N][N];
    int dp[2][N][N];
    int ans;
    void solve(){
    	cin>>n>>m>>mm;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			char x;
    			cin>>x;
    			if(x=='1'){
    				a[i][j]=1;
    			}else if(x=='0'){
    				a[i][j]=0;
    			}else{
    				a[i][j]=2;
    			}
    		}
    	}
    	for(int i=1;i<=m;i++){
    		for(int j=0;j<=mm;j++){
    			dp[0][i][j]=-INF;
    			dp[1][i][j]=-INF;
    		}
    	}
    	if(a[1][1]==2){
    		dp[1][1][0]=0;
    		dp[1][1][1]=1;
    	}else{
    		dp[1][1][0]=a[1][1];
    	}
    	for(int i=1;i<=n;i++){
    		int cur=i%2;
    		for(int j=1;j<=m;j++){
    			if(i==1&&j==1)	continue;
    			for(int k=0;k<=mm;k++){
                    dp[cur][j][k]=-INF;
                }
    			if(a[i][j]==2){
    				for(int k=0;k<=mm;k++){
    					if(i>1) dp[cur][j][k]=max(dp[cur][j][k],dp[1-cur][j][k]);
    					if(i>1&&k-1>=0)	dp[cur][j][k]=max(dp[cur][j][k],dp[1-cur][j][k-1]+1);//变
    					if(j-1>=1)	dp[cur][j][k]=max(dp[cur][j][k],dp[cur][j-1][k]);
    					if(j-1>=1&&k-1>=0)	dp[cur][j][k]=max(dp[cur][j][k],dp[cur][j-1][k-1]+1);//变
    				}
    			}else{
    				for(int k=0;k<=mm;k++){
    					if(i>1)	dp[cur][j][k]=max(dp[cur][j][k],dp[1-cur][j][k]+a[i][j]);
    					if(j-1>=1)	dp[cur][j][k]=max(dp[cur][j][k],dp[cur][j-1][k]+a[i][j]);
    				}
    			}
    		}
    	}
    	ans=0;
    	int cur=n%2;
    	for(int i=0;i<=mm;i++){
    		ans=max(ans,dp[cur][m][i]);
    	}
    	cout<<ans<<'\n';
    }
    signed main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    	int T;
    	cin>>T;
    	while(T--){
    		solve();
    	}
        return 0;
    }
    

    信息

    ID
    3566
    时间
    1000ms
    内存
    512MiB
    难度
    省选/NOI-
    标签
    递交数
    5
    已通过
    1
    上传者