首页 > 其他分享 >由P7914括号序列(A题)引发的关于区间DP的思考

由P7914括号序列(A题)引发的关于区间DP的思考

时间:2023-08-23 22:12:28浏览次数:47  
标签:方案 第一个 P7914 括号 枚举 区间 断点 DP

CF149D Coloring Brackets(B题)一样,都是关于括号的区间DP。

在B题中,有一个细节,就是在枚举断点时枚举到第一个就要break,这是为了使每种方案只贡献一次,防止一种方案中有多个符合条件的断点。

此题中,因为序列的字符是不变的,所以直接break就行了。

但是在A题中,情况变得比较复杂,比如一个序列??????

合法的方案有:

()()()
(())()

如果依然枚举到第一个断点就break,就统计不到第二个方案。

但是又不能对第一个方案重复统计。

此时必须保证对于每一个方案,仅统计一次,也就是只在第一个断点处枚举一次。

我们需要去做的,就是推算出这第一个断点有什么性质。

需要注意的是,如果一道题有多种合并区间的方式,并且可以嵌套,应该把它们综合起来考虑。

比如,只考虑AB型的字符串,第一个断点就是内部没有AB结构的前缀。
只考虑ASB型字符串,第一个断点就是内部没有ASB结构的前缀。

但是这二者可以嵌套,比如

()()*()

既是AB型,又是ASB型,如果对这两种转移分别统计,会造成重复。

综合起来考虑,总的合法方案应该是:A1+A2+...,然后在A中间插入S。

这样子,第一个断点处就是没有AB结构也没有ASB结构的前缀。

也就是除了这两个嵌套的方案数。

然后看一下断点后面的方案数:

可能有*:就是sa
可能是(...):就是f

这样就解决了问题,也就是说,以后写区间DP,一定要注意这种区间合并操作的第一个断点原则。

原则:只在第一个断点处统计!!!

标签:方案,第一个,P7914,括号,枚举,区间,断点,DP
From: https://www.cnblogs.com/zhangchenxin/p/17652899.html

相关文章

  • 2023下半年北京/广州/深圳NPDP产品经理国际认证开班中
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业或......
  • SUB-1G SOC芯片DP4306F 32 位 ARM Cortex-M0+内核替代CMT2380F32
    DP4306F是一款高性能低功耗的单片集成收发机,集成MO核MCU,工作频率可覆盖200MHiz^1000MHz。支持230/408/433/470/868/915频段。该芯片集成了射频接收器、射频发射器、频率综合器、GFSK调制器、GFSK解调器等功能模块。通过SPI接口可以对输出功率、频道选择以及数据包格式进行灵活配......
  • DPDK-22.11.2 [四] 官方basicfwd编译运行讲解
    编译安装dpdk绑定网卡驱动vfio必须有两个网口配置LD_LIBRARY_PATH和PKG_CONFIG_PATH编译运行basicfwd.c/*SPDX-License-Identifier:BSD-3-Clause*Copyright(c)2010-2015IntelCorporation*/#include<stdint.h>#include<stdlib.h>#include<inttypes.h>#incl......
  • hdu 1003 最大最长子序列 dp
    我的dp思路是记b[j]表示到到j位,最大最长的子序列的和则可得状态转移方程b[j]=max(b[j-1]+a[j],a[j]);因为每个数都有两种状态,要么和前面相连,要么自己相连;让后再比较出来最大值;一下是我的代码#include<stdio.h>#include<stdlib.h>#include<stdlib.h>#include<math.h>#includ......
  • hdu 4055 dp
    http://acm.hdu.edu.cn/showproblem.php?pid=4055#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>usingnamespacestd;constintmod=1000000007;cons......
  • 使用 DPO 微调 Llama 2
    简介基于人类反馈的强化学习(ReinforcementLearningfromHumanFeedback,RLHF)事实上已成为GPT-4或Claude等LLM训练的最后一步,它可以确保语言模型的输出符合人类在闲聊或安全性等方面的期望。然而,它也给NLP引入了一些RL相关的复杂性:既要构建一个好的奖励函数,并训......
  • dp学习笔记
    前言:因为本人\(dp\)实在太差了,故此挖个新坑。\(dp\)的一般套路是:设计状态,要注意一定要不重不漏,所有能影响到答案的数据都要包含到状态里面。初始化,基本上是第一项转移,要注意无后效性,面面俱到。可以关注数据范围,有时候范围会给我们以提醒。基本技巧:状态设计:......
  • UDP协议的收发操作
    大多数的应用程序都用TCP协议来收发数据,但当然也有例外。有些应用程序不使用TCP协议,而是使用UDP协议来收发数据。向DNS服务器查询IP地址的时候我们用的也是UDP协议。不需要重发的数据用UDP发送更高效由于我们需要将数据高效且可靠地发送给接收方。为了实现可靠性,tcp协议要求确认......
  • 20230713 java.util.concurrent.ThreadPoolExecutor
    介绍java.util.concurrent.ThreadPoolExecutorpublicclassThreadPoolExecutorextendsAbstractExecutorServiceAPI构造器ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueue<Runnable>workQueue)Thr......
  • java怎么设置定时任务(通过Executors.newScheduledThreadPool(1)方法)
    importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassdingshi{publicstaticvoidmain(String[]args)......