题目链接

首先,这是一道区间dp题;

首先我们假设 \(l\) ~ \(r\) 是一段合法的区间;

考虑状态,对于一个区间 \(l\) ~ \(r\) 的方案数,我们需要知道方案数,以及 \(l ,r\) 未知的两个半括号的颜色;

所以设 \(f[l][r][i][j]\) 表示 \(l\) ~ \(r\) 区间 \(l\) 位置颜色为 \(i\) , \(r\) 位置颜色为 \(j\) 的方案数;

考虑三种情况 :

1,\(r=l+1\), 也就是只有一对括号,那么:

​ \(f[l][r][0][1]=f[l][r][0][2]=f[l][r][1][0]=f[l][r][2][0]=1\)

2, \(p[l]==r\) 表示 \(l\) 与 \(r\) 匹配,那么:

      if(j!=1) f[l][r][0][1]=(1LL*f[l][r][0][1]+f[l+1][r-1][i][j]%mod)%mod;
if(i!=1) f[l][r][1][0]=(1LL*f[l][r][1][0]+f[l+1][r-1][i][j]%mod)%mod;
if(j!=2) f[l][r][0][2]=(1LL*f[l][r][0][2]+f[l+1][r-1][i][j]%mod)%mod;
if(i!=2) f[l][r][2][0]=(1LL*f[l][r][2][0]+f[l+1][r-1][i][j]%mod)%mod;

3, \(p[l] != r\) 那么:

for(int i=0;i<=2;i++){
for(int j=0;j<=2;j++){
for(int x=0;x<=2;x++){
for(int y=0;y<=2;y++){
if((x==1&&j==1)||(x==2&&j==2)) continue;
f[l][r][i][y]=(1LL*f[l][r][i][y]+1LL*f[l][p[l]][i][j]*f[p[l]+1][r][x][y]%mod)%mod;
}
}
}
}

题解 CF149D的更多相关文章

  1. CF149D Coloring Brackets

    CF149D Coloring Brackets Link 题面: 给出一个配对的括号序列(如"\((())()\)"."\(()\)"等, "\() ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

随机推荐

  1. SpringBoot中JPA,返回List排序

    这里简单示例,利用query,根据“createtime”字段,进行 desc 排序,最近日期的数据在最前面. public List<StatusEvent> findAll(Speci ...

  2. Android开发之华为手机无法看log日志解决方法(亲测可用华为荣耀6)

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. 在上家公司上班的时候,公司配了华为荣耀6的测试机,发现在eclipse下 无法查看 ...

  3. Unity - NGUI - 优化ScrollView的一些心的

    ScrollView是NGUI非常好用的一个内置组件,但是效率不好,当子物体过多的时候,一旦开始拖动就帧数狂掉,我目前有3个解决思路: 1. NGUI自带的Example 8 - Scroll Vie ...

  4. Odoo10中calendar视图点击事件

    有个需求,需要根据该条记录的状态字段来控制点击calendar时是否需要打开form视图,解决方案如下:重写了web_calendar的get_fc_init_options()方法中的eventCl ...

  5. DevOps-实践心得

    基于最近几年从事与DevOps的相关实践,对这篇文章的观点深有体会,所以记录在这里.加粗部分是我比较深有体会的,但是对于最后作者对于"运维"有些悲观,我有点不敢苟同,反而对于运维的 ...

  6. [LeetCode]347. 前 K 个高频元素(堆)

    题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1 ...

  7. 复习 | 重温jQuery和Zepto的API

    jq和zepto很相似有许多共同的api,zepto也出了很多与jq不一样的api,总的来说,两者更相似,但是zepto更轻量一点,正好公司也在用,复习这两个没错 jq中的zepto的事件和ajax我 ...

  8. openstack核心组件——keystone身份认证部署服务(5)

    node1主机执行 1.mysql -u root -p 2.create database keystone; 创建数据库 MariaDB [(none)]> show databases; ...

  9. 浅谈c++(一)

    本人为菜鸟一枚,如有错误,欢迎指正. 由于上半年学了C语言,为了更好的过渡到C++,我将在未来展示一下两者的不同以及优缺点.在c++中,不得不谈到类.这是C++中最重要的语法特征.我们可以通过它,定义 ...

  10. Artwork (Gym - 102346A)【DFS、连通块】

    Artwork (Gym - 102346A) 题目链接 算法 DFS,连通块 时间复杂度:O(k*n + k * k) 1.这道题就是让你判断从(0,0)到(m,n),避开中途所有的传感器(传感器的 ...