CF162J Brackets 题解

news/2025/2/12 8:30:34/文章来源:https://www.cnblogs.com/w9095/p/18710867

CF162J Brackets

看到两位用栈匹配括号的大佬,这里提供另一个思路。

对于括号的问题,我们考虑区间DP

设状态 \(dp[i][j]\) 表示使区间 \([i,j]\) 内的括号匹配需要添加的括号数量,则转移方程如下:

\(1\) :区间两边括号匹配时,因为最外层不需要匹配,需要添加的括号数量取决于最外层括号内的需要添加的括号数量,也就是 \(dp[i+1][j-1]\) 的值。

\[dp[i][j]=\min\{dp[i][j],dp[i+1][j-1]\} \]

\(2\) :枚举分割点 \(k\) ,把原区间分 \([i,k]\)\([k+1,j]\) 两个区间,然后求和,把使两个子区间需要添加的括号数量合起来,就是总区间需要添加的括号数量。

\[dp[i][j]=\min\{dp[i][j],dp[i][k]+dp[k+1][j])\} \]

最后,如果使整个区间的括号匹配不需要任何括号,也就是说 \(dp[0][n-1]=0\) ,那么说明这个序列本来就是匹配的,输出 YES ,否则输出 NO

虽然复杂度是 \(O(n^3)\) ,但是由于序列长度最长只有 \(100\) ,还是可以做的。

C++版本代码如下:

#include <bits/stdc++.h>
using namespace std;
int f[600][600];
char s[600];
int main()
{scanf("%s",s);int n=strlen(s);for(int i=0;i<n;i++)f[i][i]=1;for(int l=2;l<=n;l++)for(int i=0;i+l-1<n;i++){int j=i+l-1;f[i][j]=l;if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))f[i][j]=min(f[i][j],f[i+1][j-1]);for(int k=i;k<j;k++)f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); }if(!f[0][n-1])printf("YES"); else printf("NO");return 0;
}

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

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

相关文章

VMware NSX Advanced Load Balancer (NSX ALB) 30.1.2 - 多云负载均衡平台

VMware NSX Advanced Load Balancer (NSX ALB) 30.1.2 - 多云负载均衡平台VMware NSX Advanced Load Balancer (NSX ALB) 30.1.2 - 多云负载均衡平台 应用交付:多云负载均衡、Web 应用防火墙和容器 Ingress 服务 请访问原文链接:https://sysin.org/blog/vmware-nsx-alb-30/ 查…

Symantec Endpoint Protection 14.3 RU10 v14.3.12154.10000 下载

Symantec Endpoint Protection 14.3 RU10 v14.3.12154.10000 下载Symantec Endpoint Protection 14.3 RU10 v14.3.12154.10000 下载 Broadcom | SEP | SEPM | 简体中文版 | 繁体中文版 | 英文版 请访问原文链接:https://sysin.org/blog/sep-14/ 查看最新版。原创作品,转载请保…

动态编译一个新的 NativeApi 类

要动态编译一个新的 NativeApi 类,可以按照以下步骤进行:创建一个新的 NativeApi 类。 在 NativeApi 类中定义所需的方法和属性。 在 MainPage 中实例化并使用新的 NativeApi 类。using MauiPlus; using System.Reflection.Emit; using System.Reflection;namespace MauiPlus…

2025年的10个营销关键词

在瞬息万变的营销领域,把握趋势是成功的关键。本文总结了 2025 年的 10 个营销关键词,帮助你在 2025 年的营销战场上脱颖而出。 关键词一:需求细分 产品是营销的前提,产品的价值和人群越精准越细分,越容易爆。不要再喊大而泛的口号。 比如,母婴品牌世喜设计了一款“防胀气…

2025 开工大吉:明确绩效目标,合理安排计划

随着春节假期的结束,我们迎来了新的一年,也迎来了充满希望与挑战的开工日。在这个全新的起点上,“开工大吉”不仅是一句美好的祝愿,更是对我们每一位员工工作态度与效率的期许。为了在新的一年里实现更大的突破与发展,我们需要有一个明确的目标导向和高效的工作计划。在这…

容器附加存储CAS之OpenEBS快速入门

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.CAS之OpenEBS存储机制概述1.什么是CAS2.什么是OpenEBS3.OpenEBS数据引擎4.NDM(Node Disk Manager)5.部署OpenEBS的基本流程二.部署OpenEBS 一.CAS之OpenEBS存储机制概述 1.什么是CAS Kubernetes的卷…

【CodeForces训练记录】Codeforces Round 1004 (Div. 2)

训练情况赛后反思 这场太神奇了,都在和出题人对脑电波,全是智慧题 A题 我们考虑进位的情况,例如 9999 之类的,我们发现进位对答案的影响只有 \(x - 9k + 1 = y\),判断 \(k\) 是否存在非负整数解即可点击查看代码 #include <bits/stdc++.h> // #define int long long…

短信验证码爆破

漏洞原理 短信验证码验证时间和次数无限制,存在爆破可能 短信验证码有效期:5~10min,验证码位数4位或6位,纯数字 破解方式:使用枚举逐个尝试 使用BP爆破短信验证码可以先用已有手机号确认验证码位数2.发送验证码后将验证码输入,然后登陆抓包后续和爆破操作一致如果字典太大…

【洛谷P1955】程序自动分析[NOI2015]

今天开始学习并查集 什么是并查集呢?顾名思义,就是动态维护一个方便进行合并和查找的集合 我们采用的是树状结构 也就是说,对于一开始的每个元素 它的爸爸是它自己 然后在输入两个元素的从属关系的时候,通过路径压缩,把它的爸爸直接连到根节点 因为我们只关心这个元素在这…

chorme 系统代理设置

https 需要证书 1.使用BurpSuite导出CA证书,文件导出到本地2. 谷歌浏览器添加证书 谷歌浏览器->设置->搜索"证书"->安全->管理证书->管理从windows导入的证书->受信任的根证书颁发机构->导入第一步的证书3.设置系统代理 windows系统->设置-…

picachu 越权漏洞

1. 水平越权 1.查看提示信息,提供了3个普通用户2. 登陆其中一个账户,并查看个人信息3.根据url 可以看出有用户名信息,尝试在URL中更改其他账户名,发现查看到其他用户的信息4.再次点击查看个人信息按钮,信息更改为已登陆的用户的信息5. 查看源代码发现第27行username 的值是…

windows使用Makefile时自动给可执行文件加上.exe后缀

APP := main在使用makefile的时候,一般通过变量设置自己想要编译出来的可执行文件的名字在windows平台编译出来的可执行文件是需要.exe后缀的识别当前操作系统 通过识别当前的操作系统是什么,从而确定是否添加这个后缀在windows系统中,有这个环境变量说明自己的系统是windows而…