CF162J Brackets 题解
看到两位用栈匹配括号的大佬,这里提供另一个思路。
对于括号的问题,我们考虑区间DP。
设状态 \(dp[i][j]\) 表示使区间 \([i,j]\) 内的括号匹配需要添加的括号数量,则转移方程如下:
\(1\) :区间两边括号匹配时,因为最外层不需要匹配,需要添加的括号数量取决于最外层括号内的需要添加的括号数量,也就是 \(dp[i+1][j-1]\) 的值。
\]
\(2\) :枚举分割点 \(k\) ,把原区间分 \([i,k]\) 和 \([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;
}
CF162J Brackets 题解的更多相关文章
- 洛谷 题解 UVA1626 【括号序列 Brackets sequence】
看还没有人发记搜的题解,赶紧来水发一篇 我们定义dp[i][j]为区间i~j内最少添加几个括号才能把这个串变成正规括号序列. 考虑四种情况 i>j不存在这种子串,返回0 i==j子串长度为1无论 ...
- 题解【POJ2955】Brackets
Description We give the following inductive definition of a "regular brackets" sequence: t ...
- POJ 2955 Brackets(区间DP)题解
题意:问最多有几个括号匹配 思路:用dp[i][j]表示i到j最多匹配,若i和j构成匹配,那么dp[i][j] = dp[i + 1][j - 1] + 2,剩下情况dp[i][j] = max(dp ...
- Codeforces Round #306 (Div. 2) E. Brackets in Implications 构造
E. Brackets in Implications Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/conte ...
- leetcode & lintcode 题解
刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...
- Codeforces Round #106 (Div. 2) D. Coloring Brackets 区间dp
题目链接: http://codeforces.com/problemset/problem/149/D D. Coloring Brackets time limit per test2 secon ...
- CodeForces 508E Arthur and Brackets 贪心
题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...
- Winter-2-STL-B Brackets 解题报告及测试数据
Time Limit:2000MS Memory Limit:65536KB Description Given a string consisting of brackets of two ...
- Poj 2955 brackets(区间dp)
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7795 Accepted: 4136 Descript ...
- [LeetCode 题解]: Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
随机推荐
- springboot 集成Swagger2报错 Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is
springboot 集成Swagger2报错 Failed to start bean 'documentationPluginsBootstrapper'; nested exception is ...
- 🎀OpenTelemetry探针介绍及使用
简介 OpenTelemetry(简称 Otel)是由 CNCF 主导的云原生可观测性标准框架,用于统一采集.处理和导出分布式系统中的遥测数据(如追踪.指标.日志).其核心目标是通过标准化协议和工具集 ...
- 多模态自动驾驶混合渲染HRMAD:将NeRF和3DGS进行感知验证和端到端AD测试
基于3DGS和NeRF的三维重建技术在过去的一年中取得了快速的进步,动态模型也变得越来越普遍,然而这些模型仅限于处理原始轨迹域内的对象. HRMAD作为一种混合方案,将传统的基于网格的动态三维神经重建 ...
- 如何在 MySQL 中监控和优化慢 SQL?
如何在 MySQL 中监控和优化慢 SQL? 在 MySQL 中,慢 SQL 查询是指那些执行时间较长的查询,通常会影响数据库的性能和响应时间.通过监控和优化这些慢 SQL 查询,可以提高数据库的效率 ...
- [开源] .Net 使用 ORM 访问 人大金仓数据库
前言 京人大金仓信息技术股份有限公司(以下简称"人大金仓")是具有自主知识产权的国产数据管理软件与服务提供商.人大金仓由中国人民大学一批最早在国内开展数据库教学.科研.开发的专家于 ...
- 【代码审计】Emlog存在SQL注入+XSS漏洞
1.源码简介 EMLOG 是一款轻量级开源博客和CMS建站系统,速度快.省资源.易上手,适合各种规模的站点搭建. 2.漏洞描述 EMLOG $keyword参数存在SQL注入漏洞. EMLOG art ...
- java代码中启动exe程序最简单的方法
使用awt的Desktop类的open方法: public static void startExe(String exePath){ try { if(StringUtils.isNotBlank( ...
- Linux Mint 部署 Docker 指南
前言 之前都是在服务器上部署 WordPress ,最近把小电脑刷成了 Linux Mint 系统之后,就在想本地部署 WordPress 然后使用 Cloudflare 隧道内网穿透出去当博客. 不 ...
- AI编译器及TVM整体架构
虽然之前也依据tvm官方文档写过一篇关于TVM架构的博客,但总感觉属于一种身在此山中的感觉(偏向于TVM实现的各个模块),并没有一览众山小的即视感(对框架的整体理解). 因此,今天再次请求出战... ...
- Delegate的Target,Method
在 C# 中,Delegate 是一种引用方法的类型,可以将方法视为对象进行传递和操作.Delegate 类型的实例可以用来引用一个或多个方法,然后可以将这些引用作为参数传递给其他方法,或者用来调用这 ...