Atcoder Grand Contest 056 B - Range Argmax

因为一组 x 可能对应多组 p,考虑怎么让决策唯一化。

我们从大到小依次钦定每个值的位置,即倒着遍历 i=n,n1,,1,找到最左端的位置 v 满足,对于现在还活着的所有区间 j 满足 ljvrj,都有 xj=v,令 pj=i,然后删去所有包含 i 的区间。显然对于一组合法的 {xm},我们总能唯一还原出对应的排列 p

这样以来,原本对 x 计数可以转化为对排列 p 计数。即计算有多少个不同的 p,满足这组 p 对应的 {xm} 按照这种方式构造以后还原出来的排列刚好也是 p

对于一个合法的排列 p,以区间 max 为键值建立笛卡尔树,显然笛卡尔树的形态是唯一的。而对于一棵合法的笛卡尔树,要对应得到合法的 p 显然只能从根开始按先序遍历依次赋值 n,n1,n2,,1,也就是说合法的笛卡尔树与排列形成双射,因此考虑对笛卡尔树进行 DP。

假设当前考虑到笛卡尔树上的区间 [l,r],我们枚举 [l,r] 中最大值的位置 k,递归处理 [l,k1][k+1,r] 的部分。但是根据我们的先决条件,这里的 k 是所有合法的 k 中最靠左的,所以对于 [l,k1] 的取值也自然要有一些限制。这里有一个结论:设 k[l,k1] 最大值的位置,那么 [l,r] 合法的充要条件是,[l,k1],[k+1,r] 都是合法的,且不能存在一个 llikkrir

必要性:如果不存在 llikkrir,那么把最大值钦定在 k 也是合法的。充分性:如果存在 llikkrir,那么根据左区间的合法性可知把最大值钦定在 k 以左是不合法的,而如果把最大值钦定在 [k,k) 中某个位置,那么有 xik,也不合法,这样最左端合法位置就是 k 了。

这样以来考虑 dpl,r,k 表示有多少种不同的以 [l,r] 为根的合法的笛卡尔树数量,满足 [l,r] 最大值位置 k。预处理 gl,r,k 表示当 [l,r] 最大值位置为 k 的时候,[l,k1] 最大值位置最小是多少,这样转移可以做到 O(1)

时间复杂度 O(n3)

posted @   tzc_wk  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2022-02-10 2022.2.8 模拟赛题解
2022-02-10 Codeforces 309E - Sheep(二分+贪心)
2022-02-10 洛谷 P5548 - [BJ United Round #3] 押韵(单位根反演+幂级数)
2021-02-10 数论学习笔记
2021-02-10 洛谷 P7323 - [WC2021] 括号路径(启发式合并)
点击右上角即可分享
微信分享提示