传送门1
传送门2
写在前面:爆〇
思路:
(下面的组合数只是快速处理出全是’S’的情况,加快程序而已= =)
刚开始有5维DP的想法(怎么总比std多一维)但显然这是错误的,即使能做也会MLE
感觉状态有点难想,f[now][x][y][z]指对位置now,左边有x个’(‘,右边有y个’)’,右边有z个’(‘(且它们都未在各自的范围内匹配),所以我们就比较容易想出它的转移了
当操作为’S’时,我们可以选’(‘,那么x+1,z+1(不要管y);
也可以选’)’,但要求x>0,不然就非法了,那么x-1,z-1或y+1(由z是否>0决定)
当操作为’D’,我们可以选’()’,那么x+1,z-1或y+1;
也可以选’)(‘,那么x-1,z+1
最后判断条件要求右边没有’(‘未匹配,并且左边’(‘与右边’)’相等,即(x==y) and (z==0)
注意:多组数据初始化,注意上述转移的条件判断

#include<bits/stdc++.h>
#define LL long long
using namespace std;
int t,len;
char s[60];
bool flag[52][52][52][52];
LL f[52][52][52][52],C[52][52];
bool pd(char ch[])
{for (int i=0;i<len;i++)if (ch[i]!='S') return 0;return 1;
}
LL dfs(int now,int x,int y,int z)
{if (now==len) return (x==y)&&(!z);if (flag[now][x][y][z]) return f[now][x][y][z];if (s[now]=='S'){f[now][x][y][z]+=dfs(now+1,x+1,y,z+1);if (x){if (z) f[now][x][y][z]+=dfs(now+1,x-1,y,z-1);else f[now][x][y][z]+=dfs(now+1,x-1,y+1,z);}}else{if (z) f[now][x][y][z]+=dfs(now+1,x+1,y,z-1);else f[now][x][y][z]+=dfs(now+1,x+1,y+1,z);if (x) f[now][x][y][z]+=dfs(now+1,x-1,y,z+1);}flag[now][x][y][z]=1;return f[now][x][y][z];
}
main()
{C[0][0]=1;for (int i=1;i<=50;i++)for (int j=0;j<=i;j++)if (j)C[i][j]=C[i-1][j]+C[i-1][j-1];else C[i][j]=C[i-1][j];scanf("%d",&t);while (t--){scanf("%s",s);len=strlen(s);if (pd(s)) {printf("%lld\n",(len&1)?0:C[len][len/2]/(LL)(len/2+1));continue;}memset(flag,0,sizeof(flag));memset(f,0,sizeof(f));printf("%lld\n",dfs(0,0,0,0));}
}

【codevs2516】【BZOJ2461】符环,DP相关推荐

  1. bzoj2461 [BeiJing2011]符环 dp

    纯粹的dp,记录上面的左括号数,下面的左括号数,下面的右括号数 上面多出的右括号是一定不合法的,下面的多出的右括号一定在左括号左边,不然会被消掉 码: #include<iostream> ...

  2. BZOJ_P2461 [BeiJing2011]符环(动态规划/记忆化搜索)

    BZOJ传送门 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 113 Solved: 59 [Submit][Status][Discuss] Des ...

  3. bzoj 2461: [BeiJing2011]符环

    Description 在可以炼制魔力强大的法杖的同时,Magic Land 上的人们渐渐意识到,魔力强大并不一定能给人们带来好处--反而,由此产生的破坏性的高魔力释放,给整个大陆蒙上了恐怖的阴影. ...

  4. LOJ 2547 「JSOI2018」防御网络——思路+环DP

    题目:https://loj.ac/problem/2547 一条树边 cr->v 会被计算 ( n-siz[v] ) * siz[v] 次.一条环边会被计算几次呢?于是去写了斯坦纳树. #in ...

  5. 【HDU】5304 Eastest Magical Day Seep Group's Summer【环dp+生成树计数】

    传送门:[HDU]5304 Eastest Magical Day Seep Group's Summer my  code: my~~code: #include <bits/stdc++.h ...

  6. ZOJ 3329 One Person Game 带环的概率DP

    每次都和e[0]有关系 通过方程消去环 dp[i] = sigma(dp[i+k]*p)+dp[0]*p+1 dp[i] = a[i]*dp[0]+b[i] dp[i] = sigma(p*(a[i+ ...

  7. GMAC接口(3)——传输描述符

    描述符 以太网子系统中的DMA基于描述符的链表来传输数据.该应用程序将在系统内存中创建这些描述符. 支持以下两种类型的描述符: Normal descriptor Context descript ...

  8. e1000驱动收包描述符和skb

    Rx Desc Register是与接收描述符环有关的有4个寄存器: RDBA存放描述符缓冲的首地址,作为基地址共64位包括各32位的高低地址,  RDH和RDT是头尾指针,存放相对基址的偏移量,RD ...

  9. NOIP复赛复习(一)常见问题与常用策略

    数学类问题 1. 精度处理(高精度.实数处理.各种浮点类型处理方法) 2. 组合数学问题(斐波那契数列.第二类数.卡特兰数.Polya原理.排列组合计数.加法原理与乘法原理) 3. 进制问题(特定二进 ...

最新文章

  1. 如何计算服务限流的配额
  2. Winform中怎样在工具类中对窗体中多个控件进行操作(赋值)
  3. Python getattr() 函数==>获取一个对象的属性值
  4. 屌丝逆袭,通过相亲实现阶层跃迁的秘诀
  5. java共享密匙验证身份实例_有关java的身份验证连接数据库的一段代码,大侠来看看~...
  6. 【图论】求无向连通图的割点
  7. Spark RDD、DataFrame和DataSet的区别
  8. sheet(isPresented:onDismiss:content:) (SwiftUI 中文文档手册 教程含源码)
  9. HTML之部分易忘点
  10. 常见的几个接口管理平台简介
  11. 网络请求及各类错误代码含义总结(包含AFN错误码大全)
  12. 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
  13. 学习Python会用到的8个软件,你用的哪些
  14. #457 科技乱炖:去中心化的Damus,会比Twitter更好么
  15. c7200-adventerprisek9.124-9.T.bin
  16. Git工作原理_繁星漫天_新浪博客
  17. 基于Java实现的用于计算个人所得税的程序
  18. 遇到Word文件不能编辑该怎么解决
  19. 2022年全球市场易熔合金总体规模、主要生产商、主要地区、产品和应用细分研究报告
  20. 蘑菇云「行空板Python入门教程」第六课:贪吃蛇小游戏

热门文章

  1. java中 与%_java中“/”与“%”的区别
  2. Spark内核解析2
  3. Spark之SparkSQL实战
  4. MacOS下载钉钉直播回放经验总结
  5. selenium自动化案例(二)滑动验证码破解
  6. SQL Server单表查询语句
  7. JAVA 面向对象程序设计的继承举例
  8. windows10使用VMvare Pro开启虚拟机提示与Device/Credential Guard不兼容
  9. mongodb更新操作符$min,$max
  10. sop4封装尺寸图_妈妈再也不用担心我PCB封装又做错了~