Codeforces 149D Coloring Brackets
来源:互联网 发布:试玩软件赚钱 编辑:程序博客网 时间:2024/05/18 00:51
/* 题目大意:给定括号序列,可以将任意部分染成红色,蓝色或不染色 任意配对的序列有且只有一个被染色,任意相邻的两个括号颜色不同 设计dp[i][j][p][q],i,j配对,并对应[p][q]状态的方法数. 递推方程很好设计,注意dp的写法 */#include <cstdio>#include <cstring>#define LL long longconst int mod = 1e9 + 7;#define maxn 777LL dp[maxn][maxn][3][3];int match[maxn];int stack[maxn];char str[maxn];int len;void make_match(){ int top=0; for(int i=0;i<len;i++) { if(str[i]=='(') { stack[top++]=i; } else { match[i]=stack[top-1]; match[stack[top-1]]=i; top--; } }}void dfs(int l,int r){ if(l+1==r) { dp[l][r][0][1]=1; dp[l][r][0][2]=1; dp[l][r][1][0]=1; dp[l][r][2][0]=1; return; } if(match[l]==r) { dfs(l+1,r-1); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { if(j!=1) dp[l][r][0][1]=(dp[l][r][0][1]+dp[l+1][r-1][i][j])%mod; if(i!=1) dp[l][r][1][0]=(dp[l][r][1][0]+dp[l+1][r-1][i][j])%mod; if(j!=2) dp[l][r][0][2]=(dp[l][r][0][2]+dp[l+1][r-1][i][j])%mod; if(i!=2) dp[l][r][2][0]=(dp[l][r][2][0]+dp[l+1][r-1][i][j])%mod; } } } else { int loc=match[l]; dfs(l,loc); dfs(loc+1,r); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { for(int k=0;k<3;k++) { for(int p=0;p<3;p++) { if(!((k==1&&p==1)||(k==2&&p==2))) { dp[l][r][i][j]=(dp[l][r][i][j]+(dp[l][loc][i][k]*dp[loc+1][r][p][j])%mod)%mod; } } } } } } return;}int main(){ scanf("%s",str); len=(int)strlen(str); memset(dp,0,sizeof(dp)); memset(match,0,sizeof(match)); make_match(); dfs(0,len-1); LL ans=0; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { ans=(ans+dp[0][len-1][i][j])%mod; } } printf("%lld\n",ans); return 0;}
0 0
- Codeforces 149D Coloring Brackets
- CodeForces 149 D. Coloring Brackets
- codeforces 149d Coloring Brackets
- CodeForces 149D Coloring Brackets
- CodeForces 149D Coloring Brackets
- codeforces 149D Coloring Brackets
- CodeForces 149D Coloring Brackets
- CodeForces - 149D Coloring Brackets[区间dp]
- CodeForces 149D Coloring Brackets(JAVA版)
- codeforces 149D - Coloring Brackets (区间dp)
- CodeForces 149D Coloring Brackets(区间DP)
- Coloring Brackets - CodeForces 149 D dp
- CodeForces - 149D Coloring Brackets(区间DP)
- Codeforces 149D Coloring Brackets 【区间dp】
- CodeForces 149D Coloring Brackets(区间DP)
- codeforces 149D Coloring Brackets(区间dp)
- CodeForces 149D Coloring Brackets 区间DP
- CodeForces-149D Coloring Brackets(区间dp)
- POJ 3017 Cut the Sequence
- mtk6572 映像烧录
- 数据库--sqlserver--sqlserver 查询 值如果为NULL则显示0-解决方法
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE或者抛出UnsatisfiedLinkError异常的解决办法
- 微子危机——建造
- Codeforces 149D Coloring Brackets
- Android之WebViewClient与WebChromeClient的区别
- C++:类的成员访问权限控制
- 【Espruino】NO.05 按键是你的仆人
- UI03自定义视图 IOS程序启动流程
- hadoop下运行多个SecondaryNameNode的配置
- hdu-1671 Phone List
- BT study
- 第七届河南省ACM大学生程序设计大赛 A.物资调度