站外题求调(不难,悬2关)
  • 板块学术版
  • 楼主zyhe2013
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/7 21:27
  • 上次更新2024/8/7 22:18:46
查看原帖
站外题求调(不难,悬2关)
905073
zyhe2013楼主2024/8/7 21:27

主要是DP的转移方程不太会写。

#include <bits/stdc++.h>
using namespace std;
int maxn=0,dp[1005][1005][3][3],a[3];
string s;
void dfs(int l,int r)
{
  if(a[l]!=r)
  {
    dfs(l,a[l]);
    dfs(a[l]+1,r);
    
  }
  else if(a[l]==r)
  {
    dfs(l+1,r-1);
    for(int i=0;i<=2;i++)
    {
      dp[l][r][0][0]=;
      dp[l][r][1][1]=;
      dp[l][r][2][2]=;
    }
  }
  return;
}
signed main()
{
  // freopen("bracket.in","r",stdin);
  // freopen("bracket.out","w",stdout);
  int n;
  cin>>n>>a[1]>>a[2]>>s;
  stack<int>q;
  for(unsigned i=0;i<s.size();i++)
  {
    if(s[i]=='(')q.push(i);
    else
    {
      int t=q.top();
      q.pop();
      a[t]=i;
    }
  }
  dfs(0,n-1);
  for(int i=0;i<=2;i++)for(int j=0;j<=2;j++)maxn=max(maxn,dp[0][n-1][i][j]);
  cout<<maxn;
  return 0;
}

自己已经写了大概轮廓了,求助于万能的谷民

2024/8/7 21:27
加载中...