当前位置: 首页 > news >正文

CF1015F Bracket Substring - crazy-

前缀函数,dp

题意

给定括号序列 \(s\),和正整数 \(n\),求出有多少个长度为 \(2n\) 的合法括号序列包含子串 \(s\)

\(1 \le n \le 100\)\(s\)\(1 \le |s| \le 200\),答案对 \(10^9+7\) 取模。

题解

套路的将左括号设为 \(1\),右括号设为 \(-1\)

\(dp_{i,j,k}\) 表示前 \(i\) 个数,当前的和为 \(j\),匹配了 \(s\) 中的 \(k\) 位,暴力转移即可。

注意,若失配,需要从 \(s\) 中当前位置的前缀函数处继续匹配,否则可能出现重复。

同时,钦定 \(k=|s|\) 的前缀函数为 \(|s|\),同样是为了避免重复。

需要从前往后转移,更方便。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,len,ans;
char c[410];
int dp[210][210][210];
int g[210][3],pi[210];
void init()
{int j=pi[1]=0;for(int i=2;i<=len;i++){while(j && c[j+1]!=c[i]) j=pi[j];if(c[j+1]==c[i]) j++;pi[i]=j;}for(int i=0;i<len;i++){int k,p; k=p=i;while(k && c[k+1]!='(') k=pi[k];while(p && c[p+1]!=')') p=pi[p];if(c[k+1]=='(') k++;if(c[p+1]==')') p++;g[i][0]=k; g[i][1]=p;}g[len][0]=g[len][1]=len;
}
signed main()
{cin>>n>>(c+1);len=strlen(c+1);n*=2; init();dp[0][0][0]=1;for(int i=0;i<n;i++){for(int j=0;j<=n;j++){for(int k=0;k<=len;k++){if(j) dp[i+1][j-1][g[k][1]]+=dp[i][j][k],dp[i+1][j-1][g[k][1]]%=mod;dp[i+1][j+1][g[k][0]]+=dp[i][j][k],dp[i+1][j+1][g[k][0]]%=mod;}}}cout<<dp[n][0][len];return 0;
}
http://www.jsqmd.com/news/88931/

相关文章:

  • 华为开源自研AI框架昇思MindSpore实战:手把手带你用GAN生成手写数字
  • TikTok商品视频发布太耗时?影刀RPA一键智能发布,效率飙升12倍![特殊字符]
  • SpringBoot 缓存深入
  • 服务架构相关知识及演进
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 33--基础知识 8--切换窗口句柄
  • C语言图论:最小生成树算法
  • 影刀RPA竞品分析黑科技!AI一键生成TikTok竞品报告,效率提升1000% [特殊字符]
  • 在服务器上安装 aaPanel
  • 7-3 NCHUD-数字电路模拟程序
  • Zotero下载安装保姆级教程(附官网正版安装包,非常详细)
  • 堆箱子问题:从暴力递归到动态规划的优化之路
  • 动态Shape场景下Ascend C算子Tiling的挑战与实现
  • 运行时端的执行流程-–-behaviac
  • 影刀RPA亚马逊上架革命!3分钟自动上架商品,效率暴增1500% [特殊字符]
  • 一站式了解长轮询,SSE和WebSocket
  • CrystalDiskInfo官网下载安装保姆级教程(含中文版安装包,亲测有效)
  • 教程7:行为树的连调-–-behaviac
  • C语言图论:最短路径算法
  • 【题解】Luogu P1638 逛画展 Luogu P2564 [SCOI2009] 生日礼物
  • g++演示如何从C++代码到可执行程序
  • 详细介绍:Spring Boot 整合 Thymeleaf(视图层)
  • 电脑音频录制工具(语音聊天录音软件)
  • 【模板】静态区间最值【牛客tracker 每日一题】
  • Ascend C 与 CUDA 的对比分析-为异构计算开发者提供迁移指南
  • CF1004D Sonya and Matrix - crazy-
  • Markdown编辑完全指南
  • DAY37 早停策略和模型权重的保存
  • 西门子1200 PLC自由口通讯CRC校验程序实战
  • 【求解释】智子递归架构:基于互补递归与河洛调控的智能系统框架
  • Node.js `import.meta` 深入全面讲解