论优化寻址时间的重要性

本文通过T1 queue和T2 center两个问题实例,探讨了在算法设计中优化数组寻址时间的重要性。在T1 queue问题中,通过调整区间询问的处理方式,将数组按值分块并优化,实现了性能提升。而在T2 center问题中,改变边的存储方式,从链表转为边集数组,显著减少了寻址时间,成功避免了TLE。作者强调,在算法优化时,尤其是在时间限制紧张的情况下,应重视寻址时间的优化,以提高算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

background

冥思苦想。。。
哇!这题我会做!——但时间有点紧!——没事!打!
1 hour later,码完了!拍!拍对了!交!
“WOC,T70!这。。。”(拍案而起,怒目圆睁)
(隔壁一大佬)“诶!我过了!贼快!”
“你什么方法?”
“!@#KaTeX parse error: Expected 'EOF', got '#' at position 22: …不是一样吗,题解呢?” “!@#̲%&*”
“我就是题解法啊!什么垃圾数据连题解都卡!”
“我卡常了的。”
“怎么卡?”
“优化一下数组寻址时间!”
“QAQ~~”


举几个例子


T1 queue

要求支持区间轮换和询问区间v值出现的个数。(1≤v≤n≤1e5)(1\leq v\leq n\leq 1e5)(1vn1e5)
Time Limit:1s

很不NOIP的方法

轮换相当于点挪动位置
平衡树先预处理出那些位置要预先开好,然后分每一个v离线处理,时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)

很容易想到的方法

K个一块,每一块用链表维护,顺便维护快内每个值出现的次数,轮换的话依然是删除插入,并将中间每一个块尾元素挪到后一块开始。复杂度O(q(K+nK))O(q(K+\frac nK))O(q(K+K

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值