见题解链接https://blog.csdn.net/sdjzping/article/details/19160013

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 750
  4. #define mod 1000000007
  5. int len,p[maxn];
  6. long long dp[maxn][maxn][][];
  7. char s[maxn];
  8. void match(){
  9. stack<int>stk;
  10. while(!stk.empty())stk.pop();
  11. for(int i=;i<len;i++){
  12. if(stk.empty()){
  13. stk.push(i);
  14. continue;
  15. }
  16. int t=stk.top();
  17. if(s[i]==')'&&s[t]=='('){
  18. p[t]=i,p[i]=t;
  19. stk.pop();
  20. }
  21. else stk.push(i);
  22. }
  23. }
  24. void dfs(int l,int r){
  25. if(l==r)return;
  26. if(l+==r){//只有一种情况
  27. dp[l][r][][]=dp[l][r][][]=dp[l][r][][]=dp[l][r][][]=;
  28. return;
  29. }
  30. if(p[l]==r){//配对了
  31. dfs(l+,r-);
  32. for(int i=;i<;i++)
  33. for(int j=;j<;j++){
  34. if(j!=)dp[l][r][][]=(dp[l][r][][]+dp[l+][r-][i][j])%mod;
  35. if(j!=)dp[l][r][][]=(dp[l][r][][]+dp[l+][r-][i][j])%mod;
  36. if(i!=)dp[l][r][][]=(dp[l][r][][]+dp[l+][r-][i][j])%mod;
  37. if(i!=)dp[l][r][][]=(dp[l][r][][]+dp[l+][r-][i][j])%mod;
  38. }
  39. return;
  40. }
  41. //剩下的情况就是不能配对的情况
  42. int tmp=p[l];
  43. dfs(l,tmp);dfs(tmp+,r);
  44. for(int i=;i<;i++)
  45. for(int j=;j<;j++)
  46. for(int k=;k<;k++)
  47. for(int m=;m<;m++)
  48. if(!((k== && m==) || (k== && m==)))
  49. dp[l][r][i][j]=(dp[l][r][i][j]+(dp[l][tmp][i][k]*dp[tmp+][r][m][j])%mod)%mod;
  50. }
  51.  
  52. int main(){
  53. cin>>s;len=strlen(s);
  54. memset(dp,,sizeof dp);
  55. match();dfs(,len-);
  56. long long ans=;
  57. for(int i=;i<;i++)
  58. for(int j=;j<;j++)
  59. ans=(ans+dp[][len-][i][j])%mod;
  60. printf("%lld\n",ans);
  61. }

区间dp好题cf149d 括号匹配的更多相关文章

  1. 区间DP(入门)括号匹配

    https://www.nitacm.com/problem_show.php?pid=8314 思路:类似于https://blog.csdn.net/MIKASA3/article/details ...

  2. POJ 2955 区间DP必看的括号匹配问题,经典例题

    Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14226 Accepted: 7476 Description ...

  3. poj 2955 Brackets (区间dp基础题)

    We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...

  4. 又一道区间DP的题 -- P3146 [USACO16OPEN]248

    https://www.luogu.org/problemnew/show/P3146 一道区间dp的题,以区间长度为阶段; 但由于要处理相邻的问题,就变得有点麻烦; 最开始想了一个我知道有漏洞的方程 ...

  5. 状态压缩---区间dp第一题

    标签: ACM 题目 Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is ...

  6. poj 2955 区间dp入门题

    第一道自己做出来的区间dp题,兴奋ing,虽然说这题并不难. 从后向前考虑: 状态转移方程:dp[i][j]=dp[i+1][j](i<=j<len); dp[i][j]=Max(dp[i ...

  7. 二叉树问题(区间DP好题)

    二叉树问题 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Petya Bulochkin很幸运:他得到了一份在"Macrohard"公司的工作.他想要展现他的才华, ...

  8. codeforces 1140D(区间dp/思维题)

    D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  9. 区间dp板子题:[noi1995]石子合并

    非常经典的区间dp模板 对于每一个大于二的区间 我们显然都可以将它拆分成两个子序列 那么分别计算对于每个取最优值即可 #pragma GCC optimize("O2") #inc ...

随机推荐

  1. Python 爬虫的工具列表 附Github代码下载链接

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  2. 使用pycharm开发代码上传到GitLab和GitHub

    使用pycharm开发代码上传到GitLab和GitHub 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我这里主要是针对局域网的自减的GitLab服务器,python开发工程师如 ...

  3. 让div固定在顶部不随滚动条滚动【转】

    让div固定在顶部不随滚动条滚动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  4. Dubbo的负载均衡

    背景 Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容.一个服务通常会部署多个实例.如何从多个服务 Provider 组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略. 几 ...

  5. datetimepicker bootstrap的时间插件显示位置问题及其他配置

    位置问题: 在bootstrap中用 datetimepicker 时默认是在输入框下面弹出的, 但是遇到输入框在屏幕最下面时,日期选择框会有一部分在屏幕下面,显示不了,因此需要能够从上面弹出. 可以 ...

  6. ettercap插件介绍

    利用sslstrip和ettercap突破ssl嗅探密码 ettercap之DNS欺骗--结合metasploit使用 ettercap支持在运行时加载模块.它们会自动地编译你的系统是否支持他们或者直 ...

  7. Tessaract 源码分析(转)

    源码分析 Page Layout 分析步骤 二值化算法: OTSU调用栈:main[api/tesseractmain.cpp] -> TessBaseAPI::ProcessPages[api ...

  8. mongoDB - 日常操作一

    mongodb 启动方式 # 不启动认证 ./mongod --bind_ip 172.16.2.17 --port --fork --logpath=/opt/mongodb/mongodb.log ...

  9. Wannafly挑战赛21 E 未来城市规划

    传送门 题目中给的信息很难直接维护,但是可以考虑一条边对答案的贡献 在以\(x\)为根的子树里,如果一条边\(i\)的权值为\(w_i\),这条边深度更深的端点为\(to_i\),那么这条边对这个子树 ...

  10. [POI2007]ZAP-Queries (莫比乌斯反演+整除分块)

    [POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: ...