제출 #1221236

#제출 시각아이디문제언어결과실행 시간메모리
1221236boclobanchatDango Maker (JOI18_dango_maker)C++20
0 / 100
0 ms328 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=3005; const int INF=1e9; int dp[MAXN][8]; string s[MAXN]; bool cka[MAXN][MAXN],ckb[MAXN][MAXN]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,sum=0; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>s[i]; s[i]=' '+s[i]; } for(int i=1;i<=n;i++) for(int j=1;j+2<=m;j++) sum+=(cka[i][j]=(s[i][j]=='R'&&s[i][j+1]=='G'&&s[i][j+2]=='W')); for(int i=1;i+2<=n;i++) for(int j=1;j<=m;j++) sum+=(ckb[i][j]=(s[i][j]=='R'&&s[i+1][j]=='G'&&s[i+2][j]=='W')); for(int i=2;i+2<=n+m;i++) { int mx=0; for(int j=0;j<8;j++) dp[max(1,i-n)-1][j]=-INF; dp[max(1,i-n)-1][0]=0; for(int j=max(1,i-n);j<=min(n,i-1);j++) { for(int k=0;k<8;k++) dp[j][k]=-INF; for(int k=0;k<8;k++) { int v=k%4*2+cka[j][i-j]; dp[j][v]=max(dp[j][v],dp[j-1][k]); if(ckb[j][i-j]) for(int l=0;l<3;l++) if(v&(1<<l)) dp[j][v-(1<<l)]=max(dp[j][v-(1<<l)],dp[j-1][k]+1); } } for(int j=0;j<8;j++) mx=max(mx,dp[min(n,i-1)][j]); sum-=mx; } cout<<sum; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...