這道題n-m很小,可以從此入手

記f[i][j]為i個字符括號綜合為j的合法方案數

則第i個括號可以枚舉為(和),所以f[i][j]=f[i-1][j-1]+f[i-1][j+1],小心越界

再記a為序列總和,b為序列中前綴和最小值

則我們可以枚舉i,j統計答案,設前面括號的長度和權值為i,j

那麼中間的長度和權值為m,a,所以後面為n-m-i,-j-a

但是這樣子做會越界,我們可以考慮將所有後面的方案翻轉(左括變右,右括變左),方案合法,權值變負

這樣子,後面方案為n-m-i,j+a,所以不會越界,將所有方案乘起來即可

#include<bits/stdc++.h>
using namespace std;
int f[2010][2010],n,m,a,r,b;
#define mo 1000000007
char s[100010];
int main(){
    freopen("bracket.in","r",stdin);
    freopen("bracket.out","w",stdout);
    scanf("%d%d",&n,&m);
    scanf("%s",s+1);
    for(int i=1;i<=m;i++){
        if(s[i]==')')a--;
        else a++;
        b=min(b,a);
    }
    f[0][0]=1;
    for(int i=1;i<=n-m;i++)
        for(int j=0;j<=i;j++){
            if(j>0)f[i][j]=(f[i][j]+f[i-1][j-1])%mo;
            if(j<i-1)f[i][j]=(f[i][j]+f[i-1][j+1])%mo;
        }
    for(int i=0;i<=n-m;i++)
        for(int j=-b;j<=i;j++)
            if(a+j<=n-m-i)r=(r+(long long)f[i][j]*f[n-i-m][j+a])%mo;
    printf("%d",r);
}

jzoj5804的更多相关文章

  1. JZOJ5804. 【2018.08.12提高A组模拟】简单的序列

    性质:每个位置的前缀和必须大于0,总和=0.以此dp即可. #include <iostream> #include <cstdio> #include <cstring ...

随机推荐

  1. JavaScript跨域总结与解决办法(转)

    什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...

  2. Mockplus推出真正无限制终身版,做原型就要一辈子!

    如今提到原型工具,各位设计师和PM爸爸们一定不会对Mockplus感到陌生吧?事实上,从一开始的默默无闻,到在UXPA大赛上崭露头角,再到被Adobe XD 列为主要竞品,如今,摩客君已经在全球范围内 ...

  3. 项目 solrcloud / zookeeper 搭建

    财经道网站搜索引擎,数据快速检索,数据集群 功能描述:使用solr为项目数据库表p2p,银行理财,基金,贷款,信托,保险等建立数据索引,实现数据的导入,增量索引.实现检索建议和数据的快速查找.使用zo ...

  4. 软工1816 · 作业(八)项目UML设计

    团队信息 队员姓名与学号 学号 姓名 博客链接 124 王彬(组长) 点击这里 206 赵畅 点击这里 215 胡展瑞 点击这里 320 李恒达 点击这里 131 佘岳昕 点击这里 431 王源 点击 ...

  5. css页面组件

    页面组件 1 元素的尺寸/边框/背景 1.1 css尺寸相关属性 height 高度 min-height 最小高度 max-height 最大高度 width 宽度 min-width 最小宽度 m ...

  6. KBMMW 4.82.00 发布

    作者最近加紧了更新进度,赞一个. 时间都去哪儿了? 还没好好看4.81, 新版就来了. 这个版本主要是增强日志管理,已经强大到替换delphi 本身的异常处理了. We are happy to an ...

  7. gj9 迭代器和生成器

    9.1 python的迭代协议 list内部实现了__iter__()协议(魔法函数),是可迭代对象,但还不是迭代器(迭代器需要实现__next__协议) 生成器实现了__iter__(),__nex ...

  8. [ IE浏览器兼容问题 ] Web Uploader 在IE、FireFox下点击上传没反应

    一.项目源码: > html > js 初始化插件: 事件绑定:avalon > web > 报错: - IE: 脚本缺少对象 - FireFox: js业务逻辑代码部分事件正 ...

  9. 使用原生Java Web来实现大文件的上传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  10. 11) 生成可执行jar文件 maven-shade-plugin

    搜索 site:maven.apache.org maven-assembly-plugin http://maven.apache.org/plugins/maven-assembly-plugin ...