首页 > 其他分享 >AGC054D (ox)

AGC054D (ox)

时间:2023-11-20 22:44:07浏览次数:34  
标签:分界点 交换 括号 AGC054D ox 序列 最优

有点厉害题。对于括号序列和序列上邻项交换的问题的处理有一些启发。

首先考虑如果没有 ox 怎么样。容易发现,我们从前往后记录左括号与右括号的个数差,这个差值一旦为负就立刻从后面提一个右括号过来(一路交换过来),这个做法一定是最优的,并且是唯一最优的操作方法。这样理解比较感性,实际上我们可以对每个分界点计算贡献:如果一个分界点左侧的左括号个数减右括号个数为 \(x < 0\),则一定恰好从右边往左边扔 \(x\) 个左括号,所以在这个分界点进行的交换次数恰好是 \(x\),于是就算出了每个分界点的贡献。代入上面说的策略,会发现每个分界点的交换次数都达到了最优,于是得证。

下面考虑加入 ox。容易发现如果只有 o 是容易的,考虑每个 o 左侧的左右括号个数就能知道有多少左括号和这个 o 发生交换。然而接下来,当加入 x 时,事情变得棘手起来。由于 x 不能放置在左侧左右括号数目相等的地方,这个限制不能简单转化为某种贡献来计算(x 的位置还会限制它前后的 o 位置,从而改变许多字符被交换的次数)。

首先得出两个结论:首先,在最优解中,把所有左右括号提出来,得到的序列就是它们按照贪心策略得出的最优解。这是因为为了使 x 合法,不会产生额外的 () 间交换,这种交换直接去掉一定不劣。其次,不会有 ox 间交换。这是因为如果为了让 x 合法而把它往前后移动,这个操作可以等价地改为移动一个前面的一个右括号或后面的一个左括号过来,达到同样效果。

有了这两个结论,我们考虑首先预处理出 () 构成的序列,计算它经过一系列交换以后形成的序列,每个位置分别来自原序列的哪个位置。接着进行 DP,设 \(F_{i, j}\) 表示第 \(i\) 个 ox,前面放了 \(j\) 个 (),产生的最小贡献。其中一个 ox 的贡献是这样计算的:考虑它前面有多少个元素原本在它后面以及后面有多少元素原本在它前面。由于上述两个结论,这个贡献非常容易通过前后缀和预处理计算,时间复杂度为 \(\mathrm O(n^2)\)。

标签:分界点,交换,括号,AGC054D,ox,序列,最优
From: https://www.cnblogs.com/kyeecccccc/p/17845089.html

相关文章

  • yolo v5 下载新数据集被防火墙proxy挡住,如何设置proxy. torch.hub.download_url_to_fi
    当我们想运行yolov5时候,我们发现有的时候,由于网关问题,proxy会成为阻碍。例如如下错误;  将代码如下修改,就能改好:1.原始代码: 2.增加proxy设置: importurllib.requestimporttorch.hub#设置代理信息proxy_support=urllib.request.ProxyHandler({'http':'http......
  • vite proxy
    proxy:{"/dev-api":{target:"http://172.18.247.123:9000",rewrite:(path)=>path.replace(/^/dev-api/,''),configure:(proxy,_options)=>{proxy.on('error',(err,_req,_res)=>{console.log('pr......
  • haproxy的acl匹配方式详解+配置案例
    方法一:在HAProxy中,ACL(AccessControlLists)用于基于条件进行请求的过滤和路由。ACL可以根据不同的条件来匹配请求,比如来源IP地址、HTTP头部、URL路径等。一旦定义了ACL,你可以将其与后端服务器池、前端监听器等进行关联,以便根据条件来决定如何处理请求。以下是一些常见的AC......
  • delphi dev cxLookupComboBox 模糊搜索
    //不是过滤DATASET,适合用在下拉数据很多的情况。过滤的必须是下拉有添加的列procedurecxLookupComboBoxLikeSearchInitPopup(Sender:TObject);varFEdit:TcxLookupComboBoxabsoluteSender;i:integer;begin//ifFEdit.Properties.IncrementalSearchthen//FEdit......
  • VirtualBox安装Debian12
    下载地址:VirtualBox7.0官网:https://www.virtualbox.org/wiki/DownloadsDebian12官网:https://www.debian.org/index.zh-cn.html安装打开VirtualBox,点击新建,根据提示安装。安装时网络不佳建议断网,避免更新下载耗时太久。使用putty/xshell连接服务器,需要设置网络为桥......
  • Proxifier+Burp 抓取微信PC端小程序数据包
    由于工作要求,需要抓取微信小程序的数据包,如是了解了一下,简直是解放了一片新大陆啊!以下是记录Proxifier+Burp使用过程。现有环境BurpSuite可正常使用,能抓取浏览器HTTP/HTTPS流量。(BurpSuite的安装以及使用方法可自行百度)BurpSuite代理设置为如下图:Proxifier+Burp抓取微信H......
  • 无法安装ensp ?各种报错解决方案(virtualbox无法运行,启动AR失败,错误代码40等)
    安装eNSP。发现软件中路由器无法启动。VirtualBox是华为eNSP使用的必须运行环境,它提供虚拟网卡设备作为服务器为软件提供运行环境。1.提示出现VirtualBoxOracle无法在此项目运行。我根据百度上的方法,重新还原系统。无果。之前计算机中安装VirtualBox版本为6.0,重新下载了5.3版本的......
  • HAProxy 入门实战(2)--简单使用
    本文主要介绍HAProxy的实际使用,文中所使用到的软件版本:Centos7.9.2009、HAProxy2.8.2。1、全局配置全局配置位于global部分,该部分的参数是进程范围的,通常特定于操作系统。它们通常仅设置一次,并且在设置正确后不需要更改。其中一些参数具有命令行等效项。globallog127.0.0......
  • WPF --- TextBox的输入校验
    引言在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环。之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种:ValidationRuleIDataErrorInfo接下来分别介绍这两种校验方式。ValidationRuleValidationRule......
  • 易基因:oxBS揭示复发性膀胱癌的DNA甲基化和羟甲基化变化并鉴定预测PD-L1表达标记物
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。近日,徐州市中心医院(徐州医科大学徐州临床学院)史振铎等为第一作者、韩从辉教授为通讯作者在《BiomarkerResearch》杂志发表题为“Integrativemulti-Omicsanalysisdepictsthemethylomeandhydroxymethylomeofr......