ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「JOISC 2022 Day4」鱼 2

2022-04-15 20:33:08  阅读:214  来源: 互联网

标签:2V log Day4 JOISC 2022 区间 mathcal 复杂度 单调


考虑怎么样的鱼能取得最后的胜利,它一定是不断贪心地往两边吃,能吃就吃。

实现以上过程的一个朴素想法是,对左右两边分别维护”有效“单调栈,暴力扫一遍。

考虑用线段树维护上述过程,思考如何合并区间信息。

假设有 \(x\) 条鱼能在左子树中吃完所有的鱼,那么加入右区间后,它们的增广方向一定是单向的。

这时候发现需要分别维护区间从左和从右开始的“有效”单调栈,也就是维护从左端点或右端点开始吃,在哪些点会停下的栈。

那么就可以快速判断能吃光原区间的鱼能否在新区间依然取得成功。

可以发现栈大小最多为 \(\log_2V\) 个,因为每次跨过障碍后数值至少乘 \(2\)。

还有一种情况是在原区间并不能成功,但是在新区间时通过吃掉另一个区间的一些鱼而取得成功。

首先如果它吃不到另一个区间那么它就永远不可能吃掉全部。

那么只需考虑能吃掉一段前缀或是后缀的位置,把这些都记在它们第一个不能吃到的位置上。可以发现这些位置都在“有效”单调栈上。

接着考虑如何判断能否成为答案。

可以发现能成功的点构成一个前/后缀,那么一个朴素的想法是二分这个位置暴力判断,时间复杂度为 \(\mathcal O(N\log_2 N\log_2V\log\log_2V)\)。

进一步分析可以发现,从小到大枚举若失败则从断点开始继续走,这样合并区间信息的复杂度就是 \(\mathcal O(\log_2V)\)。

总时间复杂度为 \(\mathcal O(N\log_2V\log_2N)\)

标签:2V,log,Day4,JOISC,2022,区间,mathcal,复杂度,单调
来源: https://www.cnblogs.com/Beginner2670/p/16150801.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有