【思维】图论+dp——icpc 2019 nwerc J

/*
从后往前依次确定,i->j直接连边只会增加一种路线 
*/
#include<bits/stdc++.h>
using namespace std;
#define N 505

char s[N][N];
int n,w[N][N],mp[N][N],t[N][N];

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>(s[i]+1);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            t[i][j]=s[i][j]-'0';
    
    for(int i=n-1;i>=1;i--)
        for(int j=i+1;j<=n;j++){
            int tot=0;
            for(int k=i+1;k<=j-1;k++)
                if(mp[i][k])tot+=t[k][j];
            if(tot%10 != t[i][j])mp[i][j]=1;
        }
  
        
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            cout<<mp[i][j];
        puts("");
    }
}
原文地址:https://www.cnblogs.com/zsben991126/p/12951178.html