loj6515 贪玩蓝月 题解

题意:你需要维护一个双端队列。有5种操作,共进行\(q\)次:

  1. 给定\(v,w\),在队首加入一个物品,其体积为\(v\),权值为\(w\)
  2. 给定\(v,w\),在队尾加入一个物品,其体积为\(v\),权值为\(w\)
  3. 删除队首的物品。
  4. 删除队尾的物品。
  5. 给定\(l,r\),从队列中选取若干物品,在其体积之和对\(p\)\(p\)为定值)取模后在\([l,r]\)中的情况下,最大化物品的权值和。如果没有合法方案,输出\(-1\)

\(q\leq 50000,p\leq 500,0\leq w,v<10^9\)

难度:省选 NOI-

算法一(10分)

对于询问,直接暴力枚举每个书选还是不选,按题意求解最大值即可。

时间复杂度:\(O(q2^q)\)

算法二(20分)

对于每个询问,实际上是一个01背包问题。直接套用01背包的做法即可。

注意因为有取模,所以背包容量\(v\)是一个“环”,如果要压掉一维需要考虑一些细节。

时间复杂度:\(O(q^2Mod)\)

算法三(5分,测试点12)

01背包模板题。

时间复杂度:\(O(qMod)\)

算法四(15分,测试点13-15)

特殊性质是只在一端加入和删除。

本题最大的痛点之一,就是如何处理01背包的撤销。那如果换种说法呢,把撤销叫为“回到上个版本”,是不是感觉清晰多了!

我们可以稍稍参考可持久化的思想,将每次修改完后的dp数据都保存一份。那么IG(加入)就是新开了一个长为Mod的dp数组,DG(删除)就是回到了之前的某一次修改完成后的状态,这个只需要记录下每个节点的father,即栈顶撤销后回到的状态编号即可。

时间复杂度:\(O(qMod)\)

算法五(100分)

观察测试点17、18——这部分测试点的特点在于其队列的特性——每本书加入、删除的时间点都是一段连续的区间,且所有书的加入、删除时间是单调递增的。转念一想,不只是这两个测试点,对于所有的数据,每本书的存在时间都是一段连续的区间,而在做01背包时,我们并不关心这本书在书架的哪个位置,只关心它的\(p\)\(v\)

对于这种每个物品的存在时间是一段连续区间的问题,我们会想到线段树分治。我们把每个物品的存在时间求出,在线段树上做区间修改,把询问存到线段树的叶子结点,最后遍历整颗线段树,在每个节点上都开一个长为Mod的数组,做01背包,这样总的空间复杂度为\(O(qMod)\)。通过这种方式,我们巧妙规避了删除的问题,可以通过本题。

时间复杂度:\(O(qModlogq)\)

算法六(10分,测试点15,16)

考虑有没有在线做法。本题如需在线,另一个痛点是如何处理两端的同时增删。

既然合起来不好做,能否干脆将双端队列分成两个栈来做呢?

观察测试点15,16,特殊性质为\(l=r\)。也就是说,如果选取了左边的一些书,它们的特征值和对\(Mod\)取模后为\(k_左\),那么\(k_右\)是个定值。因此,只需要枚举一边的\(k\),就能得到一个确定的值,单次询问的时间复杂度为\(O(Mod)\),是ok的。

但这样又衍生出一个问题——如果一边被删光了,又要继续删,那会对另一边造成影响。但是右边又没法直接从栈底删,这该怎么办?

可以直接把另一边匀一半吗?这需要我们对整个dp数据进行重构,这个操作的时间复杂度是\(O(cnt\times Mod)\)的(\(cnt\)为当前书架上书的本数),我们可以接受吗?

答案是可以的。这里需要进行一些势能分析——

我们考虑一个变量\(\Delta=|cnt_左-cnt_右|\),即两边书本个数差的绝对值。当增/删一本书时,\(\Delta\)会变化1,这样的时间复杂度是\(O(Mod)\)的;而当某一边的\(cnt\)归零后,我们要重构整个dp数组,使得新的\(cnt_左=cnt_右\),这个操作花费的时间复杂度为\(O(cnt\times Mod=\Delta \times Mod)\),之后\(\Delta\)会归零。

由此我们发现,这个做法的时间复杂度是均摊\(O(qMod)\)的,可以接受。

算法七(100分)

现在,只剩最后一个问题了——对于\(k_左\)\(k_右\)可取的值是\(O(Mod)\)的,如果暴力枚举,那单次询问的时间复杂度将来到\(O(Mod^2)\),不能接受。

手摸一下,观察一下,可以发现,对于\(k_左\),可行的\(k_右\)是一段连续区间(如果将\([0,Mod-1]\)看成一个环形区间)。进一步观察,发现当\(k_左\)增大时,可行的\(k_右\)区间是一个固定长度的滑动窗口,使用单调队列即可均摊\(O(Mod)\)地求出对于所有的\(k_左\),最大的\(k_右\)

时间复杂度:\(O(qMod)\),如果使用带log的数据结构维护区间max的话就是\(O(qModlogMod)\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1154685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕设分享 基于深度学习的人脸识别系统

文章目录前言机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别深度学习-人脸识别过程人脸检测人脸识别Metric Larning前言 人脸识别目前使用越来越广泛&#xff0c;很多同学希望能在自己毕设系统中用到人脸识别技术&#xff0c;希望学长能介绍一下人脸识别技术与…

【毕业设计】基于python-CNN深度学习对大白菜是否腐烂识别基于python-CNN卷积神经网络对大白菜是否腐烂识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

信安毕业设计创新的课题大全

1 引言 毕业设计是大家学习生涯的最重要的里程碑&#xff0c;它不仅是对四年所学知识的综合运用&#xff0c;更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要&#xff0c;它应该既能体现你的专业能力&#xff0c;又能满足实际应用需求&#xff…

‌2026年软件测试行业变革全景报告:AI原生范式下的角色重塑与实战路径

测试行业正经历从“执行者”到“质量架构师”的根本性跃迁‌ 2026年&#xff0c;软件测试已不再是开发流程的“最后一道防线”&#xff0c;而是企业质量体系的‌智能中枢‌。在AI原生平台、多智能体协同与无代码革命的共同驱动下&#xff0c;测试工程师的核心价值从“写脚本”…

‌2026年软件测试行业变革全景报告:AI原生范式下的角色重塑与实战路径

测试行业正经历从“执行者”到“质量架构师”的根本性跃迁‌ 2026年&#xff0c;软件测试已不再是开发流程的“最后一道防线”&#xff0c;而是企业质量体系的‌智能中枢‌。在AI原生平台、多智能体协同与无代码革命的共同驱动下&#xff0c;测试工程师的核心价值从“写脚本”…

从数值微分到梯度下降:深度学习的基石

从数值微分到梯度下降&#xff1a;深度学习的基石 在深度学习的世界里&#xff0c;梯度下降算法是训练神经网络的基石。而要理解梯度下降&#xff0c;首先要掌握数值微分这个关键概念。 导数&#xff1a;变化的瞬间捕捉 想象你正在跑马拉松&#xff0c;前10分钟跑了2千米。你的…

深度学习毕设选题推荐:基于python-CNN卷积网络的动物是否疲劳识别基于人工智能python-CNN卷积网络的动物是否疲劳识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

你的虚拟剑值一辆特斯拉?链游道具上链:一场让玩家“真赚钱”的成本革命

引言&#xff1a;当游戏道具成为“数字资产”在2025年的游戏产业中&#xff0c;一个颠覆性现象正在蔓延&#xff1a;玩家为虚拟剑支付的费用可能超过现实中的真剑&#xff0c;而一把链上铸造的“传说级法杖”甚至能在区块链交易所拍卖出数万美元。这种价值重构的背后&#xff0…

全网最全8个AI论文网站,助本科生轻松搞定毕业论文!

全网最全8个AI论文网站&#xff0c;助本科生轻松搞定毕业论文&#xff01; AI 工具助力论文写作&#xff0c;轻松应对学术挑战 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。尤其是在当前 AIGC&#xff08;人工智能生成内容&am…

【跨平台日志集中分析实战指南】:从零搭建企业级统一日志系统的5大核心步骤

第一章&#xff1a;跨平台日志集中分析概述 在现代分布式系统架构中&#xff0c;服务往往部署于多种操作系统和运行环境中&#xff0c;包括Linux服务器、Windows主机、容器化实例以及云原生平台。这种异构性使得日志数据分散在不同节点上&#xff0c;给故障排查、安全审计与性能…

计算机深度学习毕设实战-基于python的卷积神经网络对大白菜是否腐烂识别基于python-CNN卷积神经网络对大白菜是否腐烂识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026必备!本科生毕业论文神器TOP8:一键生成论文工具深度测评

2026必备&#xff01;本科生毕业论文神器TOP8&#xff1a;一键生成论文工具深度测评 2026年本科生论文写作工具测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着高校对毕业论文质量要求的不断提升&#xff0c;越来越多的本科生开始依赖智能写作工具来提高效率、优化内容…

神经网络的学习(数值微分)

数值微分 梯度法使用梯度的信息决定前进的方向。本节将介绍梯度是什么、有什 么性质等内容。在这之前&#xff0c;我们先来介绍一下导数。 导数 假如你是全程马拉松选手&#xff0c;在开始的10 分钟内跑了2 千米。如果要计算 此时的奔跑速度&#xff0c;则为2/10 0.2&#xff…

深度学习毕设选题推荐:基于python-CNN卷积神经网络对大白菜是否腐烂识别基于python 对大白菜是否腐烂识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

基于大数据Hadoop+机器学习预测算法+Echarts的用户信用评估系统的设计与实现(精品源码+精品论文+上万数据集+答辩PPT)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…

计算机毕设java高校二手商城系统 基于Java技术的高校二手交易平台设计与实现 Java环境下高校二手交易系统开发与应用

计算机毕设java高校二手商城系统78mg59 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展&#xff0c;高校二手交易市场逐渐成为学生群体中不可或缺的一部…

Kanass一文快速上手,如何快速导入Jira、Mantis数据

本文将介绍如何快速导入Atlassian Jira与Mantis数据&#xff0c;以实现快速迁移切换。 1、Kanass的安装配置 1.1 安装 下载 点此下载 安装 以centos为例&#xff0c;将Linux下的centos安装包下载&#xff0c;并使用rpm命令安装kanass。 sudo rpm -ivh tiklab-kanass-1.2.…

计算机毕设Java基于MVC的社区党建信息系统的设计与实现 基于Java技术的社区党建信息管理平台的设计与开发 Java环境下社区党建信息系统的构建与实现

计算机毕设Java基于MVC的社区党建信息系统的设计与实现rh9169 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;计算机技术已经渗透到社会的各…

AI人脸隐私卫士应用场景:从个人到企业的解决方案

AI人脸隐私卫士应用场景&#xff1a;从个人到企业的解决方案 1. 引言&#xff1a;AI驱动的隐私保护新范式 随着智能手机和社交平台的普及&#xff0c;图像数据已成为日常沟通的重要载体。然而&#xff0c;在分享照片时&#xff0c;无意中暴露他人面部信息的风险也随之增加——…

1.1 揭秘AI大模型:普通人如何抓住这波技术红利?

1.1 揭秘AI大模型:普通人如何抓住这波技术红利? 引言:我们正处在AI变革的时代 如果你经常刷社交媒体,一定看到过各种关于AI的新闻:某某公司发布了新的大模型,某位网红用AI生成了惊人的作品,或者某个工作岗位因为AI而面临挑战。那么,什么是大模型?它真的会改变我们的…