zoukankan      html  css  js  c++  java
  • 括号匹配杂谈

    目前的体感是在平衡度上做文章,若只考虑两串的拼接关系进行计数,可以把信息压缩到平衡度上

    现有的压缩方法例如dp[i][j]表示长为i,平衡度j的括号串数目,

    dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1],计左括号平衡度+1,右括号平衡度-1

    这个dp后文就叫平衡度计数了,可以用作不少括号匹配计数问题的核心代码

    --------------------------------------------------------------------------------------------------

    例题1:629C - Famil Door and Brackets

    长度为m的括号串通过在两侧各拼接一个串扩展到长为n的方法数,n-m<=2000,n1e5

    由于只要前后串的平衡度满足平衡就可以算作拼接成功,可以

    预处理平衡度计数,然后枚举前串的长度和平衡度进行check是否可行,

    可行就往答案贡献平衡度计数

    --------------------------------------------------------------------------------------------------

    例题2:918C - The Monster

    长为n的括号和?组成的串,问合法的括号匹配区间有多少,n5e3

    复杂度首先第一维枚举左端点,第二维枚举右端点

    那么尝试让这个区间做到合法匹配,一个贪心的策略是记录?的个数,这个是可调整范围的依据,

    1:扫描到左括号,平衡度++

    2:扫描到问号,若平衡度等于问号数目,这个问号只能当做左括号,平衡度++,否则计入问号数

    3:扫描到右括号,检测平衡度正就消除1点,否则调用一个问号,问号不够直接这个区间做不到合法

    优先让左右括号自然匹配,不得已才调用问号继续扫描

  • 相关阅读:
    部署 HTTPS 访问 ( https:// )
    Jquery百宝箱
    Python 模块和包
    Python 缓存
    Python 内存管理和回收
    Python上下文管理器
    MySQL 表约束
    MySQL 字符集和校验规则工作原理
    MySQL基础笔记整理
    Redis 数据结构 之 SDS
  • 原文地址:https://www.cnblogs.com/Drenight/p/8611752.html
Copyright © 2011-2022 走看看