蒟蒻60分求助
查看原帖
蒟蒻60分求助
1101962
xiao12chen楼主2024/3/31 12:07
#include<iostream>
using namespace std;
long long n,q,ans1,ans2;
string s[25000];
bool Plalindrome(string str){
	string plalindrome_str="";
	for(long long i=str.length()-1;i>=0;i--){
		plalindrome_str+=str[i];
	}if(plalindrome_str==str)return true;
	return false;
}
void dfs(long long x,long long y){
	long long lefti=x,righti=x;
	string str;
	if(s[x][y]=='q')str="q";
	if(s[x][y]=='w')str="w";
	if(s[x][y]=='e')str="e";
	if(s[x][y]=='r')str="r";
	if(s[x][y]=='t')str="t";
	if(s[x][y]=='y')str="y";
	if(s[x][y]=='u')str="u";
	if(s[x][y]=='i')str="i";
	if(s[x][y]=='o')str="o";
	if(s[x][y]=='p')str="p";
	if(s[x][y]=='a')str="a";
	if(s[x][y]=='s')str="s";
	if(s[x][y]=='d')str="d";
	if(s[x][y]=='f')str="f";
	if(s[x][y]=='g')str="g";
	if(s[x][y]=='h')str="h";
	if(s[x][y]=='j')str="j";
	if(s[x][y]=='k')str="k";
	if(s[x][y]=='l')str="l";
	if(s[x][y]=='z')str="z";
	if(s[x][y]=='x')str="x";
	if(s[x][y]=='c')str="c";
	if(s[x][y]=='v')str="v";
	if(s[x][y]=='b')str="b";
	if(s[x][y]=='n')str="n";
	if(s[x][y]=='m')str="m";
	for(;;lefti--,righti++){
		if(lefti<0||righti>=n){
			ans1=str.length();
			break;
		}
		if(lefti!=righti){
			str=s[lefti][y]+str;
			str=str+s[righti][y];
		}if(!Plalindrome(str)){
			ans1=max((long long)1,(long long)str.length()-2);
			break;
		}
	}long long leftj=y,rightj=y;
	if(s[x][y]=='q')str="q";
	if(s[x][y]=='w')str="w";
	if(s[x][y]=='e')str="e";
	if(s[x][y]=='r')str="r";
	if(s[x][y]=='t')str="t";
	if(s[x][y]=='y')str="y";
	if(s[x][y]=='u')str="u";
	if(s[x][y]=='i')str="i";
	if(s[x][y]=='o')str="o";
	if(s[x][y]=='p')str="p";
	if(s[x][y]=='a')str="a";
	if(s[x][y]=='s')str="s";
	if(s[x][y]=='d')str="d";
	if(s[x][y]=='f')str="f";
	if(s[x][y]=='g')str="g";
	if(s[x][y]=='h')str="h";
	if(s[x][y]=='j')str="j";
	if(s[x][y]=='k')str="k";
	if(s[x][y]=='l')str="l";
	if(s[x][y]=='z')str="z";
	if(s[x][y]=='x')str="x";
	if(s[x][y]=='c')str="c";
	if(s[x][y]=='v')str="v";
	if(s[x][y]=='b')str="b";
	if(s[x][y]=='n')str="n";
	if(s[x][y]=='m')str="m";
	for(;;leftj--,rightj++){
		if(leftj<0||rightj>=n){
			ans2=str.length();
			break;
		}
		if(leftj!=rightj){
			str=s[x][leftj]+str;
			str=str+s[x][rightj];
		}if(!Plalindrome(str)){
			ans2=max((long long)1,(long long)str.length()-2);
			break;
		}
	}
}
int main(){
	cin>>n>>q;
	for(long long i=0;i<n;i++){
		cin>>s[i];
	}for(long long i=1;i<=q;i++){
		long long l,r;
		cin>>l>>r;
		l--;
		r--;
		dfs(l,r);
		cout<<max((long long)1,max(ans1,ans2))<<endl;
		ans1=0;
		ans2=0;
	}
	return 0;
}
2024/3/31 12:07
加载中...