Effects of Anti Pimples

这篇题解

这种转化应该比较容易吧,考虑贡献就好了。。转化之后将a升序排序应该也是比较自然的

讲一下为什么这种转化是正确的:我们考虑一一映射。对原来的一个子序列,我们按照其最大值为第一关键字,下标为第二关键字进行排序,显然会唯一映射到某一序列;对排序之后的序列,我们不妨假设序列也是按照最大值为第一关键字,下标为第二关键字进行排序的,所以从新的序列中任取一个子序列,根据其下标就可以还原到原来序列的唯一的一个子序列,所以两者是一一对应的,所以转化就没有问题

说一下我的做法,我从集合的角度考虑的

我们首先仍然求出每一个位置的题目要求的最大值,记为di

假设我们当前倒序循环到了位置i,且已经知道了[i+1,n]的所有非空集合的数量(指,我们知道了当集合最大值为p的集合的数量,用线段树存储),那么我们添加i这个位置,首先之前小于等于di的集合(设数目为x),加入i之后最大值就变为di了,再算上只有i一个元素的集合,所以给线段树中di这个位置加上x+1;然后之前大于di的集合(设数目为y),加入i之后最大值不变,所以我们给线段树对应区间乘以2;综上,用线段树就可以实现了

posted @   最爱丁珰  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示