Jigglypuff

題目鏈接:Jigglypuff


我們只需要找到一個
1x
x2
這樣的結構,那麼就存在兩條相同的路。

所以題目要求三條路,只要有兩個這樣的結構可以互相到達即可。

但是要注意如果存在
1xy
xy2

1x
xy
y2

這樣的結構也是可以的。


AC代碼:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=3e3+10;
int n,m,s[N][N],dp[N][N],res; char g[N][N];
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)	scanf("%s",g[i]+1);
	for(int i=1;i<n;i++)	for(int j=1;j<m;j++)	
		if(g[i+1][j]==g[i][j+1])	s[i][j]=dp[i][j]=1;
	for(int i=1;i<=n;i++)	for(int j=1;j<=m;j++)	s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
	for(int i=1;i<n;i++)	for(int j=1;j<m;j++)	if(dp[i][j]){
		if(dp[i+1][j]||dp[i][j+1])	return puts("YES"),0;
	}
	for(int i=2;i<=n;i++)	for(int j=2;j<=m;j++)	
		if(dp[i][j]&&s[i-1][j-1])	return puts("YES"),0;
	puts("NO");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章