本题需要用到莫队算法

关于莫队算法

莫队算法是一种离线算法,适用于序列中统计区间特定的目标的问题。

时间复杂度通常是 \(O(n \sqrt n)\) 或更高。

P2709 小B的询问

点击查看原题

给定一个长度为 \(n\) 序列,\(m\) 个询问,每次询问给定一个区间 \([l,r]\),如果这个区间里存在只出现一次的数,输出这个数(如果有多个就输出任意一个),没有就输出0。

\(n,m \leq 5 \times 10^5\)。

点击查看思路

每次将多余的数字删去,将没有的数字加上。

如果一个数字原来的个数为 \(t\),结果为 \(t^2\)。

增加了 \(1\),就变为 \((t + 1) ^ 2 = t ^ 2 + 2t + 1\),比原来多了 \(2t + 1\)。

减少了 \(1\),就变为 \((t - 1) ^ 2 = t ^ 2 - 2t + 1\),比原来多了 \(1 - 2t\),或者说少了 \(2t - 1\)。

点击查看代码
#include <bits/stdc++.h>

using namespace std;

const int N = 50010;

struct query {
int l, r, id;
} q[N]; int n, m, k;
int s;
int a[N]; bool cmp(const query a, const query b) {
if (a.l / s == b.l / s) {
return a.r < b.r;
}
return a.l < b.l;
} int ans[N], sum, cnt[N]; void del(int x) {
sum += 1 - 2 * cnt[a[x]];
cnt[a[x]]--;
} void add(int x) {
sum += 1 + 2 * cnt[a[x]];
cnt[a[x]]++;
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); cin >> n >> m >> k;
s = sqrt(n);
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= m; i++) cin >> q[i].l >> q[i].r, q[i].id = i;
sort(q + 1, q + m + 1, cmp); int l = 1, r = 0;
for (int i = 1; i <= m; i++) {
int x = q[i].l, y = q[i].r;
while (l > x) {
l--;
add(l);
}
while (r < y) {
r++;
add(r);
}
while (l < x) {
del(l);
l++;
}
while (r > y) {
del(r);
r--;
}
ans[q[i].id] = sum;
}
for (int i = 1; i <= m; i++) cout << ans[i] << '\n'; return 0;
}

P2709 小B的询问题解的更多相关文章

  1. P2709 小B的询问(莫队)

    P2709 小B的询问 莫队模板 资磁离线询问 维护两个跳来跳去的指针 先分块,蓝后询问按块排序. 蓝后每次指针左右横跳更新答案 #include<iostream> #include&l ...

  2. [洛谷 P2709] 小B的询问

    P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...

  3. 洛谷——P2709 小B的询问

    P2709 小B的询问 莫队算法,弄两个指针乱搞即可 这应该是基础莫队了吧 $x^2$可以拆成$((x-1)+1)^2$,也就是$(x-1)^2+1^2+2\times (x-1)$,那么如果一个数字 ...

  4. 小B的询问(题解)(莫队)

    小B的询问(题解)(莫队) Junlier良心莫队 题目 luoguP2709 小B的询问 code #include<bits/stdc++.h> #define lst long lo ...

  5. [题解]洛谷P2709 小B的询问

    地址 是一道莫队模板题. 分析 设\(\text{vis[i]}\)表示元素\(\text{i}\)出现的次数 当一个元素进入莫队时,它对答案的贡献增加.有\(\delta Ans=(X+1)^2-X ...

  6. 【Luogu P2709 小B的询问】莫队

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  7. 【刷题】洛谷 P2709 小B的询问

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  8. BZOJ3781:小B的询问——题解

    https://www.luogu.org/problemnew/show/2709 http://www.lydsy.com/JudgeOnline/problem.php?id=3781 题目描述 ...

  9. (洛谷)P2709 小B的询问

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  10. P2709 小B的询问——普通莫队&&模板

    普通莫队概念 莫队:莫涛队长发明的算法,尊称莫队.其实就是优化的暴力. 普通莫队只兹磁询问不支持修改,是离线的. 莫队的基本思想:就是假定我得到了一个询问区间[l,r]的答案,那么我可以在极短(通常是 ...

随机推荐

  1. Karmada v1.5发布:多调度组助力成本优化

    摘要:在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群. 本文分享自华为云社区& ...

  2. MAPPO学习笔记(1):从PPO算法开始

    由于这段时间的学习内容涉及到MAPPO算法,并且我对MAPPO算法这种多智能体算法的信息交互机制不甚了解,于是写了这个系列的笔记,目的是巩固知识,并且进行一些粗浅又滑稽的总结. 1.PPO算法的介绍 ...

  3. 如何在Godot中使用ParallaxBackground实现稳定的2d游戏背景[一问随笔]

    问题: 我尝试给2d游戏添加静态的背景,当角色运动速度很快时相机的渲染就跟不上角色了,背景会发生这样巨大的位移. 我将Camera2d节点和背景节点绑在一起,但根本无法解决这个问题. 我还尝试制作天空 ...

  4. 快速求popcount的和

    前置知识 \(\text{popcount}(n)\) 表示将 \(n\) 转为二进制后的数中 \(1\) 的个数. 结论 \[\sum_{i=1}^{n} \text{ popcount}(i)=\ ...

  5. NC23054 华华开始学信息学

    题目链接 题目 题目描述 因为上次在月月面前丢人了,所以华华决定开始学信息学.十分钟后,他就开始学树状数组了.这是一道树状数组的入门题: 给定一个长度为 \(N\) 的序列 \(A\) ,所有元素初值 ...

  6. #PowerBi 1分钟学会,powerbi中行列值拼接(COMBINEVALUES与CONCATENATEX)

    在日常的工作中,我们往往需要对表格数据的拼接,用来生成一些复合数据列,如下图类似场景. 其实,在powerbi中,我们同样也可以对表格文本进行拼接.今天我们就介绍两个DAX函数,COMBINEVALU ...

  7. 从浏览器输入域名开始分析DNS解析过程

    摘要:DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络. 本文分享自华为云社区<DNS那些事--从浏 ...

  8. Django admin管理工具的使用、定制及源码解析

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  9. 如何更快的烹饪出美味的MOJO系列教程🔥之初识MOJO

    MOJO基础入门<概述> 一,什么叫TMD的MOJO Mojo是一种编程语言,它与Python一样易于使用,但具有C++和Rust的性能.此外,Mojo提供了利用整个Python库生态系统 ...

  10. R 包 pathview 代谢通路可视化

    pathview R 包是一个集成 pathway 通路数据与可视化的工具集.它用于把用户的数据映射并渲染到相关的 pathway 通路图上,用户只需要提供基因或者化合物数据(gene or comp ...