比赛 CSP2023-J模拟赛 评测结果 WWWWWWWWWT
题目名称 复制题目 最终得分 0
用户昵称 hnzzlza 运行时间 1.796 s
代码语言 C++ 内存使用 4.35 MiB
提交时间 2023-10-18 21:09:43
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
string s[301];
int n,m,top,tot,f[301][301],tw[2][2]={{1,0},{0,1}},maxv=-1;
int dfs(int i,int j){
	if(f[i][j]>0)return f[i][j];
//	if((i>=n||j>=m)&&top!=0)return tot;
	if(i>=n||j>=m)return 0;
	if(top==0&&s[i][j]==')')return tot;
	int maxdfs=-1;
	if(s[i][j]=='('){
		top++;tot-=(i+j);
		for(int k=0;k<2;++k){
			maxdfs=max(maxdfs,dfs(i+tw[k][0],j+tw[k][1]));
		}
		top--;tot+=(i+j);
	}
	else if(s[i][j]==')'){
		top--;tot+=(i+j);
		for(int k=0;k<2;++k){
			maxdfs=max(maxdfs,dfs(i+tw[k][0],j+tw[k][1]));
		}
		top++;tot-=(i+j);
	}
	return f[i][j]=maxdfs;
}
int main(){
	freopen("copy.in","r",stdin);
	freopen("copy.out","w",stdout);
	cin>>n>>m;
//	memset(f,-1,sizeof(f));
//	f[n-1][m-1]=0;
	for(int i=0;i<n;++i)cin>>s[i];
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			dfs(i,j);
		}
	}
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j)maxv=max(maxv,f[i][j]);
	}
	cout<<maxv;
	return 0;
}