首页 > 其他分享 >6669: 括号配对 区间dp

6669: 括号配对 区间dp

时间:2023-04-27 22:46:38浏览次数:34  
标签:6669 int char 括号 GBE 输入 区间 dp

描述

 

Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。

以下是 GBE 的定义:

空表达式是 GBE

如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE

如果 A 与 B 都是 GBE,那么 AB 是 GBE。

 

输入

 

输入仅一行,为字符串 BE。

对于 100% 的数据,输入的字符串长度小于 100。

 

输出

 

输出仅一个整数,表示增加的最少字符数

 

样例输入

 [])

样例输出

 1   思路:区间dp,确定区间长度n,确定左右区间i,j从小区间到大区间进行更新
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10,inf = 0x3f3f3f3f;
int n,f[N][N];
string s;
int check(char a,char b)
{
    return (a=='['&&b==']' || a=='('&&b==')');
}
void dp()
{
    for(int i=0;i<n;i++)
        f[i+1][i] = 0,f[i][i] = 1;
    for(int i=n-2;i>=0;i--) //左端点 
        for(int j=i+1;j<n;j++) //右端点 
        {
            f[i][j] = n;
            if(check(s[i],s[j]))f[i][j] = min(f[i][j],f[i+1][j-1]); //比较当前区间ij和更小的区间i+1 j-1的大小 
            for(int k=i;k<j;k++) //遍历左右区间以k为中间点寻找最优解 
                f[i][j] = min(f[i][j],f[i][k]+f[k+1][j]);
        }
}
int main()
{
    cin>>s;
    n = s.length();
    dp();
    printf("%d",f[0][n-1]);
     return 0;
}

 

标签:6669,int,char,括号,GBE,输入,区间,dp
From: https://www.cnblogs.com/jyssh/p/17360436.html

相关文章

  • 换根 DP 板子
    以前一直以为这玩意是随机应变的。结果还真能总结出板子。当然也有一定的局限性,比如\(dp\)值必须\(O(1)\)算。但不影响正常使用。ins:向\(k\)的子树信息中插入/删除\(nx\)的子树信息。这里的子树在dfs1中是指以\(1\)为根的子树;dfs2中是指以\(k\)为根。recalc......
  • 区间DP小结(附经典例题) 转载
    区间DP转载自:原博客一、定义​区间DP是线性动态规划的扩展,适用场景为每段区间的最优解可以通过更小区间的最优解得到。所以我们一般的解题思路都是先在小区间得到最优解,然后总结出递推公式,利用小区间的最优解求大区间的最优解。二、实现伪代码//mst(dp,0)初始化dp数组for......
  • P4316 绿豆蛙的归宿(期望dp)
    题目描述给出张n个点m条边的有向无环图,起点为11,终点为n,每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。到达每一个顶点时,如果该节点有k条出边,绿豆蛙可以选择任意一条边离开该点,并且走向每条边的概率为1/k。现......
  • CF960F Pathwalks | 线段树优化DP
    题目设\(dp[x,w]\)为以结点\(x\)为结尾,且最后一条边边权为\(w\)的最长路径长度。考虑根据顺序加边,对于边\((u,v)\),更新\[dp[v,w]=\max_{w'<w}\{dp[u,w']\}+1\]对于每个节点,建一棵线段树,维护\(dp[x]\),这样每次更新\(dp[v,w]\)就相当于在\(dp[u]\)所对应的线段树中查询\([......
  • DP 概论
    对于一个题目,我们有暴力搜索算法。而dp就是尽可能将同一类的东西合并到一个状态上。如何检查dp的正确性?检查集合内部转移是否一致。检查方案数是否正确。状压dp有好几种状态压缩的方式:记录“选了哪些东西”这样的信息,可以用一个长度为\(n\)的01串,对应一个十进制......
  • 【DP】LeetCode 740. 删除并获得点数
    题目链接740.删除并获得点数思路分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums以前i个元素组成(即nums[i-1])的状态;dp[i][j]分别表示以nums1前i个元素(......
  • C# 获取系统DPI缩放比例以及分辨率大小
    一般方法System.Windows.Forms.Screen类//获取当前主屏幕分辨率intscreenWidth=Screen.PrimaryScreen.Bounds.Width;intscreenHeight=Screen.PrimaryScreen.Bounds.Height;//获取指定屏幕分辨率ScreensecondaryScreen=Screen.AllScreens[1];intsecondaryScree......
  • 区间dp
    区间dp前情提要先赞后看,必成习惯一、区间dp-常见的也常考的dp1.区间dp是什么?区间动态规划是用dp的状态来表示和一段区间有关的性质,比如说dp[i][j]表示解决区间[i,j]上的子问题的最小代价或最大收益,然后利用区间子问题之间的关系递推求解。2.区间dp怎么写?区间dp常见的有......
  • LengthFieldPrepender和LengthFieldBasedFrameDecoder
    1,使用LengthFieldPrepender编码,LengthFieldBasedFrameDecoder解码的netty传输......
  • 【DP】LeetCode 213. 打家劫舍 II
    题目链接213.打家劫舍II思路分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums以前i个元素组成(即nums[i-1])的状态;dp[i][j]分别表示以nums1前i个元素(即n......