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

UOJ #748 机器人表演

题意:给定一个长度为 \(n\) 的括号串 \(S\)(不一定合法),求有多少种长度为 \(m\) 的不同括号串 \(T\),存在一种将 \(T\) 划分为两个子序列 \(A, B\) 的方式,使得 \(S=A\)\(B\) 为合法括号串。

考虑如何判定 \(T\) 能否划分,贪心枚举 \(T\) 的每一位,能给 \(A\) 就给,否则交给 \(B\)

但是有可能遇到 \(B\) 中已经没有左括号给当前的右括号匹配了,考虑撤销掉一些 \(A\),将单个左括号加上一个合法串构成的子串交给 \(B\),此时右括号可以匹配。

由判定设计 dp 状态:\(f_{i, j, k}\) 表示有 \(i\) 个匹配给 \(A\)\(B\) 中目前有 \(j\) 个左括号和 \(k\) 个右括号。

按贪心判定法转移最终每种合法情况的转移路径都是唯一确定的,可以做到不重不漏。

代码:(此处 \(n + 2t = m\),01 串 0 为左括号 1 为右括号)

for (int i = 1, j, c; i <= n; i++) {for (j = i, c = 0; j && ~c; j--) {c += s[j] == '1' ? 1 : -1;pre[i] = j;}if (~c) pre[i] = 0;
}
f[0][0][0] = 1;
for (int j = 0; j <= t; j++) {for (int k = 0; k <= j; k++) {for (int i = 0; i <= n; i++) {int x = f[i][j][k];if (i < n) add(f[i + 1][j][k], x);if (i == n || s[i + 1] == '1') add(f[i][j + 1][k], x);if (i == n || s[i + 1] == '0') add(f[i][j][k + 1], x);if ((i == n || s[i + 1] == '0') && j == k && pre[i]) {int d = (i - pre[i]) / 2 + 1;if (j + d <= t) add(f[pre[i] - 1][j + d][k + d], x);}}}
}
cout << f[n][t][t] << "\n";
http://www.jsqmd.com/news/201096/

相关文章:

  • 2026 顶尖保险律师团队 TOP5:覆盖全场景纠纷,护航权益最大化 - 测评者007
  • 如何使用protobuf生成字节流payload
  • 2601C++,pmr管理内存
  • One-KVM 部署(S905l3a 盒子)
  • 2601,xmake的3.0.6更新
  • 2026年比较好的橡胶混炼胶厂家采购选型榜单 - 品牌鉴赏师
  • 新版微信4.1及以上dat文件转图片
  • 从几则科技新闻,聊聊我们这代人的技术视野与未来
  • 2026年热门的锂电电池盒厂家新品推荐榜 - 品牌鉴赏师
  • 计算机深度学习毕设实战-机器学习基于python卷积神经网络训练识别牙齿是否健康
  • 如何使用VOFA+配合恒温箱进行温度监控?
  • Marp for vscode举例
  • 计算机深度学习毕设实战-基于人工智能的CNN卷积神经网络对海洋壳类生物识别
  • CF1526F - Median Queries
  • 四元数散度和旋度-8
  • 大数据挖掘中的自动化数据增强
  • 2026年靠谱的橡塑制品厂家选型参考指南 - 品牌鉴赏师
  • 四元数散度和旋度-9
  • 激励型需求响应对配电网运行可靠性的影响Matlab代码
  • 2026年热门的精密注塑制品厂家选购参考榜 - 品牌鉴赏师
  • 四元数散度和旋度-7
  • 大数据领域数据合规:提升竞争力的关键
  • 电价负荷需求响应-考虑电价变动Matlab代码
  • 【剑斩OFFER】算法的暴力美学——字母异位词分组
  • 组件通信
  • 【无人机三维路径规划】基于混沌增强领导者黏菌算法CELSMA多无人机协同集群避障路径规划 目标函数:最低成本:路径、高度、威胁、转角附Matlab代码
  • 独立开发者:Build In Public,解决产品冷启动难题
  • 小米 Pad 5 (nabu) 引导 Linux 的FFU问题(未解决):固件、ABL 与 FFU 模式
  • 【癫痫检测】癫痫中针对功能障碍特异性干预措施的癫痫终止建模Matlab实现
  • 2026新年选购指南:全球3D扫描仪十大品牌权威排名与深度解析 - 匠子网络