P6333 [COCI2007-2008#1] ZAPIS 题解

news/2025/10/13 16:05:36/文章来源:https://www.cnblogs.com/Luckies/p/19138683/P6333

首先观察数据范围,一眼 \(\mathcal O(n^3)\),然后再观察题目,你感觉它是个区间 dp,那么恭喜你,你的感觉是对的。

然后你直接一个区间 dp 板子拍上去,设 \(dp_{i, j}\) 表示区间 \([i, j]\) 的方案数,那么转移很显然,若 \(i,j\) 能够匹配,则可以将 \([i + 1, j - 1]\) 包起来,然后计算由两个串拼起来的。

然后你测一下样例,发现你错了。接着你模拟了一下样例,发现你算重了,例如样例 1:()()(),你输出了 2

你发现 \(\texttt{()()()} = \texttt{()} + \texttt{()()}\)\(\texttt{()()} + \texttt{()}\),于是你会统计两遍。也就是对于由两个匹配串拼起来的串,若其中的某一个串也是由某些子串拼起来的,就会算重。

于是你开始寻找原因。设 \(s_{[i,j]} = s_{[i,k_1]} + s_{[k_1+1,j]},s_{[k_1+1,j]}=s_{[k_1+1,k_2]}+s_{[k_2+1,j]}\),其中 \(s_{[i,k_1]},s_{[k_1+1,j]},s_{[k_1+1,k_2]},s_{[k_2+1,j]}\) 都是括号匹配串,那么也一定有 \(s_{[i,j]} = s_{[i,k_2]} + s_{[k_2+1,j]},s_{[i,k_2]}=s_{[i,k_1]}+s_{[k_1+1,k_2]}\),于是 \(s_{[k_1+1, k_2]}\) 就算重了。

然后你开始想办法让它只算一次。可以钦定 \(s_{[k_1+1,k_2]}\) 只在 \(s_{[k_1+1,r]}\) 中出现,那么 \(s_{[i,k]}\) 就一定不是拼接而成的括号串。于是拼接的方式形如"不拼接串+拼接串"。

现在你知道如何去重了,于是你开始修改状态。设 \(dp_{i,j,0/1}\) 表示 \([i,j]\) 不是/是拼接串的方案数。然后你将转移修改。

\[dp_{i,j,0}=check(i, j) \cdot (dp_{i+1,j-1,0}+dp_{i+1,j-1,1}) \\dp_{i,j,1}=\sum_{k=i}^{j-1}{dp_{i,k,0} \cdot (dp_{k+1,j,0}+dp_{k+1,j,1})} \]

其中 \(check(i, j)\) 表示 \(i,j\) 是否能匹配。若 \(s_i = s_j = \texttt{?}\),则 \(check(i, j) = 3\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 505, Mod = 1e5;
int n, dp[N][N][2];
bool f;
string s;
bool check(int i, int j)
{return (s[i] == '(' && s[j] == ')' || s[i] == '[' && s[j] == ']' || s[i] == '{' && s[j] == '}' || (s[i] == '?' && (s[j] == ')' || s[j] == ']' || s[j] == '}') || ((s[i] == '(' || s[i] == '[' || s[i] == '{') && s[j] == '?')));
}
int add(int x, int y)
{if(x + y >= Mod)f = 1;return x + y >= Mod ? x + y - Mod : x + y;
}
signed main()
{cin >> n >> s;s = ' ' + s;for(int i = 1; i < n; i++)if(s[i] == s[i + 1] && s[i] == '?')dp[i][i + 1][0] = 3;else if(check(i, i + 1)) dp[i][i + 1][0] = 1;for(int len = 4; len <= n; len += 2)for(int i = 1; i + len - 1 <= n; i++){int j = i + len - 1;if(s[i] == s[j] && s[i] == '?')dp[i][j][0] = add(dp[i + 1][j - 1][0], dp[i + 1][j - 1][1]) * 3 % Mod;else if(check(i, j))dp[i][j][0] = add(dp[i + 1][j - 1][0], dp[i + 1][j - 1][1]);for(int k = i + 1; k < j; k += 2)dp[i][j][1] = add(dp[i][j][1], dp[i][k][0] * add(dp[k + 1][j][1], dp[k + 1][j][0]) % Mod);}if(f)return printf("%05lld", add(dp[1][n][0], dp[1][n][1])), 0;cout << add(dp[1][n][0], dp[1][n][1]);return 0;
}

P.S:这是我在考场时的心路历程,且我认为大部分人在第一次做此题时都是如此,于是我使用了第二人称。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直播预告|PostgreSQL 18 六大新特性深度解析

PostgreSQL 18 已于 9 月 25 日正式发布。该版本包含大量改进,其中有多项新特性。在 PostgreSQL 18 发布后,IvorySQL 社区推出了一篇六大新特性解读的文章聚焦六大功能:PostgreSQL 18 新特性深度解析,引发了多人关…

新型电力系统下 MyEMS 微电网协同调度:实践路径与园区落地案例

面对 “双碳” 目标下工业园区的能源痛点 —— 可再生能源弃电多、电费成本高、停电影响生产,MyEMS(微能源管理系统)成为微电网协同调度的核心工具。本文从园区实际需求出发,先拆解新型电力系统对微电网的具体要求…

抖音超人福袋助手,抖音福袋扭蛋机,抖音抢福袋工具,

DY福袋工具 抖音福袋超人福袋助手 v2.3 [2025-09-29] 抖音超人福袋助手,抖音抢福袋工具,抖音无水印视频下载器,抖音直播间录制下载器,抖音批量取消关注取关器。 最新公告: 下载地址:https://wwnm.lanzouo.com/ib…

操作指南:国标GB28181/RTSP推流EasyGBS算法算力平台如何查看设备端录像回看?

操作指南:国标GB28181/RTSP推流EasyGBS算法算力平台如何查看设备端录像回看?以海康摄像机为例,完成设备端录像配置并在EasyGBS算法算力平台查看录像回看的详细流程,步骤清晰可落地。 一、设备端(海康摄像机)录像…

【华中科大主办|往届EI均检索】第四届声学,流体力学与工程国际学术会议(AFME 2025)

由华中科技大学主办,中国海洋大学、苏州大学协办,华中科技大学航空航天学院和船舶与海洋工程学院承办的第四届声学、流体力学与工程国际学术会议(AFME 2025)将于2025年10月24日至26日在中国武汉举行。本次会议旨在…

Codeforces Round 1058 (Div. 2) (4/8)

又是一场speedforces ,可恶的棒子。但是好在b题卡了一会后,c,d 都切的很快。把前两场的分上回来了。 A: 分组不影响 mex 的值,所以直接求解 mex 输出即可 B: f(i) 本质是每个后缀,不同数字的个数。可以观察到每增…

10.13

又是满课的一天,下午又是一连4节,讲的类与对象

P8037 [COCI2015-2016#7] Prokletnik 题解

如果你做过 GSS2,那么你会发现它们很像,都是询问最优子段的问题。 这里有一个 trick,对于这一类询问最优子段的问题,首先考虑将询问离线,然后扫描线。若当前扫描到 \(i\),设 \(f_j\) 表示以 \(j\) 为左端点,\(i…

论文解读-《Learning Discrete Structures for Graph Neural Networks》 - zhang

1. 论文介绍 论文题目:Learning Discrete Structures for Graph Neural Networks 论文领域:图神经网络,图结构学习 论文地址: https://arxiv.org/abs/1903.11960 论文发表:ICML 2019 论文代码:https://github.com…

【A】The Lost Ship in the Sky

Exercise 容易发现,操作次数就是 \(\operatorname{LCM}(l_i)\),其中 \(l_i\) 为所有的置换环大小。那么,对于可能的答案 \(X=\prod p_i^{a_i}\),我们构造 \(l_i=p_i^{a_i}\),对于剩下的我们补足 1,则 \(\sum p_i…

2025 AI 品牌最新推荐排行榜:聚焦商业落地能力,甄选懂需求的实力服务机构东北 Ai/大连 Ai/大连 Ai 培训/大连 Ai 开发/大连 Ai 推广公司推荐

引言当前大连正加速打造人工智能产业创新高地,已形成高新区技术策源、金普新区场景应用的产业格局,36 个科技创新平台与 500PFlops 算力基础为企业智能化转型提供支撑。但企业在引入 AI 时普遍面临技术与商业脱节的困…

基于经验模态分解的去趋势波动分析(EMD-DFA)方法

1. 关键步骤详解 1.1 经验模态分解(EMD)分解原理:将非平稳信号自适应分解为多个本征模态函数(IMF),每个IMF满足: 局部极值点与过零点数量差≤1 局部包络均值趋近于零MATLAB实现: [imf, residual] = emd(signal…

双碳目标下企业零碳转型的 MyEMS 碳流可视化支撑体系:路径探索与效能评估

在 “双碳” 目标向实体经济渗透的过程中,企业零碳转型正从 “口号式响应” 迈向 “精细化落地”。然而,多数企业面临 “碳流看不见、瓶颈找不到、效果难衡量” 的困境:制造企业的碳排放分散在生产、供应链、废弃物…

Langchain+Neo4j+Agent 的结合案例-电商销售 - 详解

Langchain+Neo4j+Agent 的结合案例-电商销售 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

ERP原理笔记

ERP原理笔记第1章 初识ERP 1.1 企业管理的困惑全球竞争激烈,没有受保护的领地 竞争策略演变:敌无我有 敌有我优 敌优我廉 敌廉我走 敌廉我快1.2 速度成为新的竞争条件1995年:美国公司提出"955"要求(95%订…

2025 智慧康养实训室/专业建设/虚拟仿真/仿真实训室推荐榜:北京教之道 5 星领衔,适配多元康养场景

随着康养需求向智能化、个性化升级,智慧康养凭借 “数据监测 + 服务联动” 优势成为主流方向。结合技术适配性、场景覆盖度与用户反馈,2025 年优质品牌榜单发布,北京教之道科技发展有限公司以全场景服务能力稳居 5 …

Wireshark】抓包实战,图文详解TCP三次握手及四次挥手原理

ip.src == 1.1.1.1ip.dst == 2.2.2.2ip.addr == 3.3.3.3tcp.port == 80tcp.port <= 80tcp.srcport == 80tcp.dstport == 80tcp.flags.syn == 1 //SYN置位报文 【Wireshark】抓包实战,图文详解TCP三次握手及四次挥…

2025 年国内水泵厂家最新推荐排行榜:涵盖多类型水泵,助力用户精准选购优质产品立式多级/自吸/磁力/排污/真空/离心水泵厂家推荐

当前水泵市场品牌繁杂,产品质量与性能差异显著,从工业生产所需的高压耐腐泵到家庭用的小型增压泵,不同场景对水泵的要求各不相同。许多用户在选购时,常因缺乏专业认知,难以辨别产品优劣,易陷入 “选贵的不选对的…

2025 年国内工业水泵厂家最新推荐排行榜:聚焦污水 / 离心 / 渣浆 / 大功率 / 泥浆类设备,助力企业精准选型

在工业生产体系中,工业水泵作为流体输送的核心设备,其品质与性能直接关联企业生产效率、运营成本及安全生产。当前市场上,工业水泵品牌繁杂,产品质量差距显著,部分设备存在材质不耐腐蚀、易磨损、使用寿命短等问题…

基于深度学习的图像增强-zeros-DCE模型源码分享

本文介绍了一个基于Zero-DCE深度学习模型的图像增强系统,能够自动优化曝光不足的暗淡图片。该系统采用PyQt5构建GUI界面,集成了预训练模型,支持快速图像增强处理(仅需几秒)。文章详细展示了系统原理、效果演示(包…