Submission #1158747

#TimeUsernameProblemLanguageResultExecution timeMemory
1158747brover29Dango Maker (JOI18_dango_maker)C++17
13 / 100
32 ms71168 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],pos[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>lft; ll w[M],pr[M],l[N],r[N]; bool try_kunh(ll v){ if(w[v])return 0; w[v]=1; for(ll to:g[v]) if (!l[to]){ l[to]=v; r[v]=to; return 1; } for(ll to:g[v]) if (try_kunh(l[to])){ l[to]=v; r[v]=to; return 1; } return 0; } ll kunh(){ ll ans=0; for(ll ch=1;ch;){ ch=0; for(ll i:lft)w[i]=0; for(ll i:lft){ if(r[i])continue; if(try_kunh(i)){ ans++; ch=1; } } }return ans; }ll sz,cnt; void dfs(ll v,ll k=0){ w[v]=1; sz++; k^=1; cnt+=k; for(ll to:g[v]){ if(w[to])continue; dfs(to,k); } } vector<dango>a; ll ans=0,used[N][N]; 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]; } }for(ll i=1;i<=n;i++){ for(ll j=1;j<=m;j++){ if(c[i][j]=='R'&&c[i][j+1]=='G'&&c[i][j+2]=='W'){ vector<pair<ll,ll>>v={make_pair(i,j),make_pair(i,j+1),make_pair(i,j+2)}; dango x; x.v=v; a.push_back(x); lft.push_back(a.size()); }if(c[i][j]=='R'&&c[i+1][j]=='G'&&c[i+2][j]=='W'){ vector<pair<ll,ll>>v; v={{i,j},{i+1,j},{i+2,j}}; dango x; x.v=v; a.push_back(x); ll n=a.size(); pos[i][j]=pos[i+1][j]=pos[i+2][j]=n; } } } for(ll i=0;i<lft.size();i++){ ll u=lft[i]; // cout<<u<<' '; for(auto j:a[u-1].v){ ll x=pos[j.f][j.s]; if(!x)continue; g[u].push_back(x); g[x].push_back(u); } }ll ans=0; for(ll i=1;i<=a.size();i++){ if(w[i])continue; sz=0; cnt=0; dfs(i,0); ans+=max(cnt,sz-cnt); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...