比赛 |
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;
}