제출 #1161289

#제출 시각아이디문제언어결과실행 시간메모리
1161289brover29Dango Maker (JOI18_dango_maker)C++17
100 / 100
291 ms150404 KiB
#include <bits/stdc++.h> //qwerty47924692 using namespace std; using ll = long long; const ll N=3005; const string br="617283"; #define sz(a)(ll)a.size() #define f first #define s second ll n,m,dp[N][N][2]; char a[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>>a[i][j]; } }ll ans=0; for(ll x=1;x<=n;x++){ ll i=x,j=1; while(i>=1&&j<=m){ dp[i][j][1]=max(dp[i+1][j-1][0],dp[i+1][j-1][1]); dp[i][j][0]=dp[i+1][j-1][0]; if(j>=3)dp[i][j][0]=max(dp[i][j][0],dp[i+3][j-3][1]); if(i>=3&&a[i][j]=='W'&&a[i-1][j]=='G'&&a[i-2][j]=='R'){ dp[i][j][1]++; }if(j>=3&&a[i][j]=='W'&&a[i][j-1]=='G'&&a[i][j-2]=='R'){ dp[i][j][0]++; } i--; j++; } i++; j--; ans+=max(dp[i][j][0],dp[i][j][1]); }for(ll y=2;y<=m;y++){ ll i=n,j=y; while(i>=1&&j<=m){ dp[i][j][1]=max(dp[i+1][j-1][0],dp[i+1][j-1][1]); dp[i][j][0]=dp[i+1][j-1][0]; if(j>=3)dp[i][j][0]=max(dp[i][j][0],dp[i+3][j-3][1]); if(i>=3&&a[i][j]=='W'&&a[i-1][j]=='G'&&a[i-2][j]=='R'){ dp[i][j][1]++; }if(j>=3&&a[i][j]=='W'&&a[i][j-1]=='G'&&a[i][j-2]=='R'){ dp[i][j][0]++; } i--; j++; }i++; j--; ans+=max(dp[i][j][0],dp[i][j][1]); } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...