首页 > 其他分享 >莫队1 走上骗分之路

莫队1 走上骗分之路

时间:2024-12-12 21:09:59浏览次数:5  
标签:骗分 return void 之路 pos while qryy 莫队

莫队1 走上骗分之路

新坑介绍莫队, 第一篇是不带修的线性莫队.

什么是莫队

一种硬往两边扩展 (可能是收缩) 的玄学算法, 是老前辈莫涛老师发明的算法, 又因为莫老师进了国家队, 所以叫莫队.

Google搜索需要搜索"Mo's Algo".

莫队能解决什么问题

很多, 只要 \([l, r]\) 这个区间的答案可以 \(O(1)\) 扩展到 \([l - 1, r]\), \([l + 1, r]\), \([l, r - 1]\) 和 \([l, r + 1]\) 这四个相邻区间的答案就可以用.

举例区间和

给一个数组和很多区间, 不带修, 求这些区间的和.

这个题显然是前缀和板子, 但是我们在讨论莫队, 所以只考虑莫队.

由于没这个题, 所以给个样例, 强度不知道大不大.

9 5
2 3 5 7 11 13 17 19 23
1 5
2 6
3 9
1 9
5 5
28
39
95
100
11

首先, 这个题扩展到相邻区间只需要加加减减的, 显然 \(O(1)\), 那么莫队考虑的就是怎么让这些加加减减的次数更少.

莫队的想法是, 给询问排序, 先看左端点所在的块, 再看右端点.

qsortstdlib.hcstdlib 里, 用不习惯可以用 sort(q + 1, q + Q + 1, cmp) 然后把 cmp 的比较改掉, 返回 \(x - y\) 就改成 \(x < y\), 返回 \(-x + y\) 就改成 \(x > y\).

typedef struct _node {
  int l, r, k;
} qryy;

int cmp(const void *a, const void *b) {
  qryy *x = (qryy*)(a), *y = (qryy*)(b);
  if (pos[x->l] ^ pos[y->l]) {
    return pos[x->l] - pos[y->l];
  } else if (pos[x->l] & 1) {
    return -x->r + y->r;
  } else {
    return x->r - y->r;
  }
}
void get_ans() {
  int l = 1, r = 0;
  qsort(q + 1, Q, sizeof(q[0]), cmp);
  f1 (i, 1, Q, 1) {
    while (q[i].l < l) {
      s += a[--l];
    }
    while (r < q[i].r) {
      s += a[++r];
    }
    while (l < q[i].l) {
      s -= a[l++];   
    }
    while (q[i].r < r) {
      s -= a[r--];
    }
    ans[q[i].k] = s;
  }
}

不过既然 \(l\) 和 \(r\) 看上去这么像队头和队尾, 那么也有可能莫队是莫涛老师の双端队列吧.

有的问题需要预处理

VJudge SPOJ LuoGu 双倍经验_VJudge 双倍经验_LuoGu

求区间 unique 长, 就是区间降重后的数量.

SDOI再次坐实板子巨多.

双倍经验的数据范围较大, 所以数组都看着双倍经验开即可.

我们先预处理出每个数上一次在哪出现, 下一次在哪出现, 然后用这个扩展即可.

void init() {
  f1 (i, 1, N, 1) {
    pre[i] = lst[a[i]];
    lst[a[i]] = i;
  }
  f1 (i, 1, N, 1) {
    lst[a[i]] = N + 1;
  }
  f2 (i, N, 1, 1) {
    nxt[i] = lst[a[i]];
    lst[a[i]] = i;
  }
}
int cmp(const void *a, const void *b) {
  qryy *x = (qryy*)(a), *y = (qryy*)(b);
  if (pos[x->l] ^ pos[y->l]) {
    return pos[x->l] - pos[y->l];
  } else if (pos[x->l] & 1) {
    return -x->r + y->r;
  } else {
    return x->r - y->r;
  }
}

void get_ans() {
  int l = 1, r = 0;
  qsort(q + 1, Q, sizeof(q[0]), cmp);
  f1 (i, 1, Q, 1) {
    while (q[i].l < l) {
      s += (nxt[--l] > r);
    }
    while (r < q[i].r) {
      s += (pre[++r] < l);
    }
    while (l < q[i].l) {
      s -= (nxt[l++] > r);   
    }
    while (q[i].r < r) {
      s -= (pre[r--] < l);
    }
    ans[q[i].k] = s;
  }
}
read(&N);
M = pow(N, 0.5);
f1 (i, 1, N, 1) {
  read(a + i);
  pos[i] = (i - 1) / M + 1;
}
init();
read(&Q);
f1 (i, 1, Q, 1) {
  read(&q[i].l, &q[i].r);
  q[i].k = i;
}
get_ans();
for (int i(1); i <= Q; ++i) {
  cout << ans[i] << endl;
}

标签:骗分,return,void,之路,pos,while,qryy,莫队
From: https://www.cnblogs.com/defad-ak-ioi/p/18603449

相关文章

  • 【MySQL 进阶之路】索引失效的11种情况
    MySQL进阶之路:索引失效的11种情况在MySQL的查询优化中,索引是一项至关重要的技术,它能够大大提升数据检索的效率。本文将讨论这11种常见情况,帮助开发者更好地理解索引的使用及优化。图示1.使用不等式操作符(!=,<,>)例子:SELECT*FROMusersWHEREage!=30;原理:索......
  • 《计算机视觉:瓶颈之辩与未来之路》
    一、计算机视觉的崛起计算机视觉是使用计算机模仿人类视觉系统的科学,让计算机拥有类似人类提取、处理、理解和分析图像以及图像序列的能力。它是一个多学科交叉的领域,与机器视觉、图像处理、人工智能、机器学习等领域密切相关。计算机视觉行业可分为基础层、技术层和应用层......
  • Spring 应用合并之路(二):峰回路转,柳暗花明
    作者:京东科技李君书接上文,前面在Spring应用合并之路(一):摸石头过河介绍了几种不成功的经验,下面继续折腾… 四、仓库合并,独立容器在经历了上面的尝试,在同事为啥不搞两个独立的容器提醒下,决定抛开SpringBoot内置的父子容器方案,完全自己实现父子容器。如何加载web项目?......
  • 莫队算法(Helped With ChatGPT)
    ​同步我的博客:https://me.mycbxzd.top/archives/32ChatGPT也可能会犯错。请核查重要信息。一、普通莫队算法1.概述普通莫队算法是处理一维区间查询问题的基础版本。主要目标是通过排序和分块,将暴力计算中每次区间操作的重复部分重用,从而优化查询效率。2.适用场景普......
  • 十亿级订单系统的数据库查询性能优化之路
    作者:京东零售崔健0.前言•系统概要:BIP采购系统用于京东采销部门向供应商采购商品,并且提供了多种创建采购单的方式以及采购单审批、回告、下传回传等业务功能•系统价值:向供应商采购商品增加库存,满足库存周转及客户订单的销售,供应链最重要的第一环节1.背景采购系统在经历了多......
  • 平台发展的智能化革新之路
      ========  一、引言----  随着互联网的快速发展和人工智能技术的崛起,电商平台逐渐进入了一个新的发展阶段。在这个阶段,AI技术的应用成为了提升电商平台销售效率的关键因素。从用户体验到供应链管理,AI技术正在深刻影响着电商行业的未来发展趋势。本文将围绕AI技术在电......
  • 从「读万卷书」到「行万里路」:大语言模型中的强化学习之路
    在过去的两年里,AI尤其是大语言模型(LLM)领域发展迅猛,从ChatGPT的崛起到各大厂纷纷推出自家大模型,几乎天天有新进展。对于许多程序员而言,这些模型在预训练和微调上的方法可能早已耳熟能详:先用海量文本数据进行自监督学习(Self-SupervisedLearning),再通过人类反馈(如RLHF)对模型......
  • 性能测试线下体系下压测​体系优化之路
    目录一、性能测试体系调研二、性能测试体系建设1)需求准入2)需求评审3)测试环境4)数据模块5)制定定时回归及基线跟踪体系6)团队提升7)建立定期的内部培训机制8)内部知识库的沉淀三、性能测试体系建设效果性能测试体系建设是每个测试团队的管理者必须做的一项规划,......
  • 6.824/6.5840 Lab 4: Fault-tolerant Key/Value Service踩坑之路
    WearethechampionsmyfriendAndwe'llkeeponfightingtilltheendWearethechampions——WeAreTheChampions完整代码见: GitHub-SnowLegend-star/6.824:Asweadvance,thetrialsgrowevermorearduous,andnowwestandbeforeanevenmightiersu......
  • 绿盟科技前三季度巨亏3.26亿 AI与出海能否成为救赎之路?
    在网安行业的寒冬中,绿盟科技正面临着前所未有的挑战。随着2024年Q3财报的公布,行业高市值与盈利难的矛盾愈发凸显,绿盟科技也未能幸免。尽管公司在AI大模型和出海领域做出了诸多尝试,但能否成为其救赎之路,仍充满未知。首先,从财报数据上看,绿盟科技的营收增长已经陷入停滞。前三......