2026/5/18 15:53:56
网站建设
项目流程
网站建设初步课程介绍,网站在手机上内页图不显示,seo技术培训广东,风景网站模板莫队
莫队是一种高效的离线处理区间查询问题的算法#xff0c;本质是一种经过优化的暴力算法#xff0c;该算法基于以下核心思想#xff1a;当已知区间 [l, r] 的答案时#xff0c;可以以 O(k) 的时间复杂度#xff08;k 通常为 1 或 log n#xff09;计算出相邻区间 [l1…莫队莫队是一种高效的离线处理区间查询问题的算法本质是一种经过优化的暴力算法该算法基于以下核心思想当已知区间 [l, r] 的答案时可以以 O(k) 的时间复杂度k 通常为 1 或 log n计算出相邻区间 [l±1, r] 和 [l, r±1] 的答案。算法流程读取所有查询请求按照特定规则对查询进行排序依次处理每个查询通过增量调整的方式从上一个区间移动到当前区间示例移动路径[1, 3] → [1, 4] → [2, 4]排序采用双关键字排序第一关键字左端点 l 所在的块编号第二关键字右端点 r 的值时间复杂度设块大小为 B序列长度为 n查询次数为 m左端点移动次数O(mB)右端点移动次数O(n²/B)当取 B √(n²/m) 时达到最优时间复杂度。通过合理选择块大小可以确保整体复杂度为 O(n√m)。代码intcmp(qq a,qq b){//蝶形优化if(pos[a.l]^pos[b.l]){returnpos[a.l]pos[b.l];}if(pos[a.l]1){returna.rb.r;}returna.rb.r;}intmain(){sort(q1,q1m,cmp);for(inti1;im;i){while(lq[i].l)ans-!--t[a[l]];while(lq[i].l)ans!t[a[--l]];while(rq[i].r)ans!t[a[r]];while(rq[i].r)ans-!--t[a[r--]];cnt[q[i].id]ans;}}