首页 > 其他分享 >一种求前 k 小方案的神奇方法

一种求前 k 小方案的神奇方法

时间:2023-06-15 18:55:04浏览次数:37  
标签:方案 val 求前 pos 权值 集合 trans 神奇

一种求前 \(k\) 小方案的神奇方法

同样适用于前 k 大

肯定对于每一个方案 \(x\) 都会有一个 \(val(x)\) 表示这种方案的权值。

我们定义对于一个集合的 \(val\) 是 \(val(S)=\min\limits_{x\in S}\{val(S)\}\),首先需要找到一个集合 \(S\) 使得 \(val(S)\) 是最小的权值,对 \(S\) 定义一个 \(trans(S)\) 表示 \(S\) 能变换到的集合的集合,一般这个 \(trans\) 是一个固定的变换方法,这里需要满足 \(T \in trans(S) ,val(T)\ge val(S)\) 并且对于任意一个不是权值最小的方案 \(T\) 都存在且一个 \(S\) 使得 \(T \in trans(S)\),这样能保证我们拓展到的集合权值是逐渐递增的,并且一个集合不会被拓展到多次。

考虑我们如何维护这个东西,我们用一个堆维护当前的已经被拓展到的方案,取出 \(val\) 最小的方案 \(S\),然后将 \(trans(S)\) 中没有加进过堆的集合全部加入堆中,将 \(S\) 弹出堆,重复操作,不难发现我们第 \(i\) 弹出堆的元素一定是第 \(i\) 小,因为根据上面 \(trans\) 的定义是一定能变换到所有方案的,并且从最小方案到当前方案的路径上 \(val\) 是递增的,我们这样拓展 \(k\) 次一定能找到第 \(k\) 小的元素,我们设 \(sz\) 表示 \(trans\) 集合的大小,\(ds\) 表示从集合中找到最大值的复杂度,判断集合是否加进过堆的复杂度是 \(O(chk)\),这样时间复杂度是 \(O(k\cdot sz\cdot ds\cdot (chk+\log(k\cdot sz)))\),非常优秀。

题目:

P2048 [NOI2010] 超级钢琴

题意:给你一个长度为 \(n\) 序列 \(A\),求前 \(k\) 大的长度属于 \([l,r]\) 的区间 \(a_i\) 和。

\(n,k \le 5 \times 10^5,-1000 \le a_i \le 1000\)。

发现区间不好做,先做前缀和转换成 \(\max(a_r-a_l)\),发现对于每一个左端点 \(x\) 都有一个 \([l,r]\) 表示右端点能在的位置,我们用堆维护五元组 \(S=\{x,l,r,val,pos\}\) 表示左端点是 \(x\) ,右端点选的区间是 \([l,r]\) ,当右端点选 \(pos\) 时是最优的,权值为 \(val\) ,不难发现 \(trans(S)=\{\{x,l,pos-1,val_{l,pos-1},pos_{l,pos-1}\},\{x,pos+1,r,val_{pos+1,r},pos_{pos+1,r}\}\}\),发现 \(pos\) 肯定是 \([l,r]\) 中 \(a_i\) 最大的 \(i\) ,这个可以直接用 \(st\) 表维护,\(val\) 也就很好算了,这里 \(sz=2,ds=O(\log n)\),不会有重复集合加入堆,所以时间复杂度 \(O(k \log k\log n)\)。

异或粽子和上面那道题基本一样,就不详细说了。

P6230 [BalticOI 2019 Day2]奥运会

题意:有 \(n\) 个人,\(k\) 个比赛,第 \(i\) 个人在第 \(j\) 场比赛中的得分是 \(a_{i,j}\) 现在一支队伍要选 \(k\) 个人,这支队伍每一场比赛的得分为得分最高的那个人的得分,这支队伍的得分为所有比赛的得分的和,现在问你得分第 \(C\) 大的队伍的得分

\(n\le500,k \le6,C\le2000\)

蒟蒻瞎想的做法:

蒟蒻瞎想的做法

洛谷题解做法:

首先这个数据范围非常小,所以我们设的一些东西可以非常暴力。

P6646 [CCO2020] Shopping Plans

GCY 上 XZT 即可

标签:方案,val,求前,pos,权值,集合,trans,神奇
From: https://www.cnblogs.com/lnyx/p/17483130.html

相关文章

  • 互联网行业-镭速文件传输系统方案
    互联网行业是一个快速变化和高度竞争的行业,这一行业需要传输大量的数据、代码和文件。在互联网企业的生产和运营过程中,需要传输各种敏感和大型的文件,例如业务报告、数据分析、软件代码等。这些文件需要在不同的部门、不同的地点之间高效地传输、共享和协作。互联网企业需要使用一......
  • 指纹打卡机语音方案,快速响应、低功耗MP3芯片N9301
    随着科技的不断进步,语音技术在各个领域中的应用也越来越广泛。在指纹考核机领域中,语音方案的加入能够有效提高用户的使用便利性和安全性。为此,一种新型的语音芯片加入指纹考核机语音方案被研发出来。语音指纹考勤机,目前市场上采用的高性价比的语音芯片N9301;此款芯片是一个提供串......
  • 互联网行业-镭速文件传输系统方案
      互联网行业是一个快速变化和高度竞争的行业,这一行业需要传输大量的数据、代码和文件。在互联网企业的生产和运营过程中,需要传输各种敏感和大型的文件,例如业务报告、数据分析、软件代码等。这些文件需要在不同的部门、不同的地点之间高效地传输、共享和协作。互联网企业需要......
  • 解决方案 | Claunch 如何更新配置文件
    1、问题比如我的电脑上有Claunch3.26版本(绿色版本),但是更新的时候如何保证我的新版本的图标、链接也更新是个问题。官网说得比较模糊: 2、解决方法打开复制data数据覆盖到新版本同样的路径下即可。【也就是说:把C:\...\Claunch3.26\Data全部复制到C:\...\Claunch4.04\Data】,......
  • 立体声环绕蓝牙音频传输方案,N8900-S24在眼部按摩仪上的运用
    “轻松生活,音乐随心”某某名人说过:音乐是一种心情艺术,能增加人心灵感悟力和心智理解力!随着科技的创新与不断进步,在人们也享受到了科技带来的便利时,乐基也在这是悄然“加入”;眼部按摩仪也受到了广大消费者的欢迎,如今许多厂家都在使用N8900-S24蓝牙音频方案,通过手机连接产品,即可实现......
  • Long类型后端传前端精度丢失的优雅解决方案
    前言提要:javaScript的最大安全值:Number.MAX_SAFE_INTEGER是一个值为9007199254740991的常量,如果超过这个值,那么js会出现不精确问题解决方案(推荐级别:低等):修改字段类型为String解决方案(推荐级别:中等):字段上添加注解@JsonFormat(shape=JsonFormat.Shape.STRING)......
  • 浅析H5页面跳转小程序的3种实现方案
    经常会有这样的场景:用户在网页中一键唤起小程序,能够给用户提供更好的体验。实现H5跳转小程序的方案目前有多种,可以根据自己的实际场景选择。第一种:通过URLScheme适合在外部浏览器运行的H5页面,通过URLScheme的方式来拉起微信打开指定小程序。那如何获取小程序......
  • 社交直播语聊场景解决方案(一)商业化探索
    摘要在过去几年的直播行业创业风口期中,直播的用户关注度疯狂增长,但用户质量却参差不齐。随着用户新鲜感一过,流失率变得相当严重,各大平台都在竭尽全力防御。然而,留住“凑热闹”的非直播受众用户并不是最关键的问题,而是要找到适合真实直播受众用户的商业化道路,才能保证行业的稳定繁......
  • PPT| XXX电子MES 项目解决方案(可下载)
    PPT总共有71页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询PPT总共有71页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询......
  • PPT| 乳制品行业MES解决方案P60
    PPT总共有60页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询PPT总共有60页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询......