Submission #1158701

#TimeUsernameProblemLanguageResultExecution timeMemory
1158701brover29Dango Maker (JOI18_dango_maker)C++17
13 / 100
2098 ms71212 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = int;
const ll N=3005;
const ll M=N*N/3;
const string br="617283";
#define sz(a)(ll)a.size()
#define f first
#define s second
ll dp[N][N];
char c[N][N];
ll n,m;
struct dango{
    vector<pair<ll,ll>>v;

};
bool equ(dango a,dango b){
    for(auto i:a.v){
        for(auto j:b.v){
            if(i==j)return 1;
        }
    }
    return 0;
}
vector<ll>g[M];
vector<ll>l;
ll was[M],pr[M];
void dfs(ll v,ll k){
    was[v]=1;
    k^=1;
    if(k==1)l.push_back(v);
    for(ll to:g[v]){
        if(was[to])continue;
        dfs(to,k);
    }
}ll try_kuhn(ll v){
    if(was[v])return 0;
    was[v]=1;
    for(ll to:g[v]){
        if(!pr[to]||try_kuhn(pr[to])){
            pr[to]=v;
            return 1;
        }
    }return 0;
}
vector<dango>a;
ll kuhn(){
    ll ans=0;
    for(ll i:l){
        for(ll j=1;j<=a.size();j++)was[j]=0;
        ans+=try_kuhn(i);
    }
    return ans;
}ll ans=0,used[N][N];
void f(ll i,ll j,ll cnt=0){
    if(i==n&&j==m){
        ans=max(ans,cnt);
        return;
    }ll ni=i,nj=j;
    ni++;
    if(ni>n){
        ni=1;
        nj++;
    }
    f(ni,nj,cnt);
    if(c[i][j]=='R'&&c[i+1][j]=='G'&&c[i+2][j]=='W'&&!used[i][j]&&!used[i+1][j]&&!used[i+2][j]){
        used[i][j]=1;
        used[i+1][j]=1;
        used[i+2][j]=1;
        f(ni,nj,cnt+1);
        used[i][j]=0;
        used[i+1][j]=0;
        used[i+2][j]=0;
    } if(c[i][j]=='R'&&c[i][j+1]=='G'&&c[i][j+2]=='W'&&!used[i][j]&&!used[i][j+1]&&!used[i][j+2]){
        used[i][j]=1;
        used[i][j+1]=1;
        used[i][j+2]=1;
        f(ni,nj,cnt+1);
        used[i][j]=0;
        used[i][j+1]=0;
        used[i][j+2]=0;
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>m;
    for(ll i=1;i<=n;i++){
        for(ll j=1;j<=m;j++){
            cin>>c[i][j];
        }
    }
    f(n,0);
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...