제출 #227907

#제출 시각아이디문제언어결과실행 시간메모리
227907dvdg6566Dango Maker (JOI18_dango_maker)C++14
100 / 100
648 ms75444 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> pi;
typedef vector<pi> vpi;
typedef long double ld;
#define pb emplace_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define ALL(x) x.begin(), x.end()
#define SZ(x) (ll)x.size()
#define f first
#define s second
const ll MAXN = 3010;
const ll INF = 1e18;
const ll MOD = 1e9+7;
 
int N,M;
string S;
int done[MAXN][MAXN];
int G[MAXN][MAXN];
ll a;
int dp[MAXN][2];
vi V[MAXN];
int dpmem[MAXN][2];
 
int vert(pi x){
	return G[x.f-1][x.s]==1&&G[x.f+1][x.s]==3;
}
 
int hori(pi x){
	return G[x.f][x.s-1]==1&&G[x.f][x.s+1]==3;
}
 
int ask(int x, int p){
	if(x<0)return -1;
	if(dp[x][p]!=0)return dp[x][p];
	if(dpmem[x][p]!=1)return max(ask(x-1,p),ask(x-2,p^1));
	dp[x][p]=max(ask(x-1,p),ask(x-2,p^1))+1;
	dp[x][p]=max(dp[x][p],1);
	// cout<<x<<' '<<p<<' '<<dp[x][p]<<'\n';
	return dp[x][p];
}
ll ans;
 
int main(){
	cin>>N>>M;
	for (int i=1;i<=N;++i){
		cin>>S;
		for (int j=1;j<=M;++j){
			if(S[j-1]=='R')G[i+1][j+1]=1;
			if(S[j-1]=='G')G[i+1][j+1]=2;
			if(S[j-1]=='W')G[i+1][j+1]=3;			
		}
	}
	for (int i=2;i<=N+1;++i)for(int j=2;j<=M+1;++j){
		if(done[i][j]||G[i][j]!=2)continue;
		int t=1;
		pi cur = mp(i,j);
		if(!vert(cur)&&!hori(cur))continue;
		while(1){
			pi nxt=mp(cur.f+1,cur.s-1);
			done[cur.f][cur.s]=1;
			if(G[nxt.f][nxt.s]!=2)break;
			if(!vert(nxt)&&!hori(nxt))break;
			cur=nxt;++t;
		}
		// cout<<t<<'\n';
		cur=mp(i,j);
		for(int x=0;x<=t;++x)dpmem[x][0]=dpmem[x][1]=dp[x][0]=dp[x][1]=0;
		for (int x=0;x<t;++x){
			pi curr = mp(cur.f+x,cur.s-x);
			if(vert(curr))dpmem[x][0]=1;
			if(hori(curr))dpmem[x][1]=1;
			// cout<<dpmem[x][0]<<' '<<dpmem[x][1]<<'\n';
		}
		ans+=max(ask(t-1,0), ask(t-1,1));
	}
	cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...