洛谷P2709.小B的询问 (普通莫队)

题解:洛谷 P2709 【模板】莫队 / 小 B 的询问 个区间查询,每个查询求区间内各数字出现次数的平方和。使指针移动总次数最小化,可以将复杂度优化至。关键观察是:相邻查询的区间往往重叠,通过。行,每行一个整数,对应一个询问的答案。若对每个查询暴力统计,时间复杂度为。个询问,每个询问给定一个区间。个整数,表示小 B 的序列。小 B 请你帮助他回答询问。 阅读详情

2020.5.18
还是蛮有收获的,谁也没想到第一次自己写莫队能不看题解1A,激动。

这道题就是维护区间内所有数字出现次数的平方和。这要在平时肯定很难搞,至少我是想不出任何能够处理这个区间问题的树状结构,现在有莫队算法就可以做了。

首先老一套,分块,排序,这些都不用讲。主要是add和del函数,我们观察到,k范围比较小,可以开数组记录每个数字的出现次数,然后当区间加入一个数字的时候,首先要把上一层的贡献撤掉,就是cnt[a[x]]的平方,然后给这个数字的贡献再加上1,之后再在答案里加上平方就可以了,这些东西可以在O(1)时间内从l和r转移过来,然后套上莫队,就ac了,我也不知道为什么我的答案会比所有的标准答案大1,然后-1就ac了。
上代码:

#include <bits/stdc++.h>
using namespace std;
#define limit (1000000 + 5)//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3f
#define lowbit(i) i&(-i)//一步两步
#define EPS 1e-6
#define FASTIO  ios::sync_with_stdio(false);cin.tie(0);
#define ff(a) printf("%lld\n",a );
#define pi(a,b) pair<a,b>
#define rep(i, a, b) for(int i = a ; i <= b ; ++i)
#define per(i, a, b) for(int i = b ; i >= a ; --i)
#define mint(a,b,c) min(min(a,b), c)
#define MOD 998244353
#define FOPEN freopen("C:\\Users\\administrator01\\CLionProjects\\untitled24\\data.txt", "rt", stdin)
typedef long long ll;
typedef unsigned long long ull;
ll read(){
    ll sign = 1, x = 0;char s = getchar();
    while(s > '9' || s < '0' ){if(s == '-')sign = -1;s = getchar();}
    while(s >= '0' && s <= '9'){x = x * 10 + s - '0';s = getchar();}
    return x * sign;
}//快读
void write(ll x){
    if(x / 10) write(x / 10);
    putchar(x % 10 + '0');
}
int n, m, k;
struct node{
    int l, r, qid, blo;
    bool operator<(const node &rhs)const{
        if(blo ^ rhs.blo)return l < rhs.l;
        return blo & 1 ? r < rhs.r : rhs.r < r;
    }
}query[limit];
int cnt[limit],a[limit];
ll ans[limit];
ll res;
ll sq(int x){
    return x * x;
}
void add(int x){
    res -= sq(cnt[a[x]]);
    res += sq(++cnt[a[x]]);
}
void del(int x){
    res -= sq(cnt[a[x]]);
    res += sq(--cnt[a[x]]);
}
int main(){
#ifdef LOCAL
    FOPEN;
    //freopen("C:\\Users\\administrator01\\CLionProjects\\untitled24\\out.txt", "w", stdout);
#endif
    n = read(), m = read(), k = read();
    rep(i ,1, n)a[i] = read();
    int block = int(sqrt(n >= 3 ? n * (2.0 / 3) : n));//分块
    rep(i, 1, m){
        query[i].l = read(), query[i].r = read(), query[i].qid = i;
        query[i].blo = query[i].l / block;//分成块
    }
    sort(query + 1, query + 1 + m);
    int l = 0 , r = 0;
    res = 0;
    rep(i ,1, m){
        while(l < query[i].l)del(l++);//缩进
        while(l > query[i].l)add(--l);
        while(r < query[i].r)add(++r);
        while(r > query[i].r)del(r--);
        ans[query[i].qid] = res;
    }
    rep(i ,1, m)write(ans[i] - 1),puts("");
    return 0;
}
零基础基于U-Net网络实战眼底图像血管提取 文章目录1 前言2 血管提取任务概述3 U-Net架构简介4 眼底图像血管分割代码5 结果评估可视化(ROC曲线)6 改进U-Net网络完成眼底图像血管提取任务思路 1 前言 本文基于U-Net架构完成了视网膜血管的提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然 阅读详情

相关推荐

GAN模型中的常见变体有哪些,如DCGAN、WGAN和CGAN等?

生成对抗网络(GAN)是一种强大的深度学习模型,它由生成器和判别器两个网络组成,通过对抗训练的方式实现生成数据的能力。随着研究的发展,出现了许多GAN的变体,每个变体都有其独特的改进和特点。

huidhsu的博客 2261

洛谷 P1903 数颜色 / 维护队列(带修改莫队+经典)

题目链接: https://www.luogu.org/problemnew/show/P1903 题意: 给你一个含n个整数的序列,每个数代表一种颜色,给你若干个查询操作和修改操作,查询即查询[l,r][l,r][l,r]区间内颜色数,修改即修改a[x]a[x]a[x]的颜色为valvalval,对于每个查询输出颜色数; 分析: 带修改莫队; (先放代码,下次再补) 代码: #include&l...

梧桐 345

华中科技大学头歌 交通灯系统设计 Lojisim 详细实验报告,实验图,仅供参考

本实验也是参考了许多大神的做法,也是小白一个!有完整实验代码,实验报告,答辩PPT(ppt当时做得仓促,有点拉胯)~ 需要请评论或私QQ:3096524043(有偿~~) 一、数码管驱动 由真值表生成电路 二、四位无符号比较器设计 三、8位无符号比较器设计 四、一位2路选择器设计 五、八位2路选择器设计 六、BCD双向计数器状态机设计 七、BCD双向计数器输出函数设计 ...

FindXY的博客 1万+

洛谷 P2709 小B的询问(普通莫队+入门)

题目链接: https://www.luogu.org/problemnew/show/P2709 题意: 小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L…R],求Σ(c(i)2)\Sigma(c(i)^2)Σ(c(i)2)的值,其中i的值从1到K,其中c(i)表示数字i在[L…R]中的重复次数。对于每个区间询问,输出一个Σ(c(i)2)\Sigma(c(i)...

梧桐 235

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1383

扬声器设计避坑指南:用Comsol分析反电动势对THD的影响(附案例文件)

本文深入探讨了扬声器设计中反电动势对总谐波失真的关键影响。通过COMSOL仿真,详细分析了BL值非线性、音圈电感变化等电磁-力-声耦合机制,并提供了从参数化建模到系统级优化的实战指南,帮助工程师精准量化并降低谐波失真,提升扬声器音质。

xx56789的博客 520

莫队模板

莫队模板

qq_42643660的博客 355

概率的接力:拆解大模型“预测下一个词“的底层逻辑

大模型的智能不在于它拥有了意识,而在于它用纯数学的架构,将人类语言的复杂结构压缩为可计算的向量轨迹与概率接力。当我们不再将其拟人化为"思考者",而是视作高维条件概率引擎时,才能真正驾驭它。预测下一个词,从来不是终点,而是起点。未来的核心竞争力,属于那些能洞察其统计本质、善用其模式生成能力,并以人类理性与事实为锚点的协作者。词元的轨迹终会止步于上下文窗口,但对技术底层的清醒认知,才是跨越幻觉、走向真实智能的基石。

AI浩 329

莫队算法学习笔记

看了AgOH大佬的视频https://www.bilibili.com/video/BV1C4411u7rK?from=search&seid=5854182600235483127 然后写了视频里的洛谷板子题 洛谷P2709 小B的询问 https://www.luogu.com.cn/problem/P2709 #include<iostream> #include<algorithm> #include<cmath> #include<cstring&

REXWind的博客 262

高云FPGA系列教程(1):FPGA和ARM开发环境搭建

至此,高云FPGA和MCU开发环境就搭建完成了,整体还是比较简单的,几乎是一键完成,下一篇文章我们进行实际的FPGA和MCU开发。本文是高云FPGA系列教程的第1篇文章。

whik1194的博客 6186

含分布式电源的配电网三段式电流保护影响仿真研究

文章摘要 本文研究了分布式电源(DG)接入对配电网三段式电流保护的影响。通过在Matlab/Simulink平台搭建含同步发电机型DG的10kV配电网模型,设计了基于傅里叶算法的三段式电流保护模块(I段瞬时速断、II段限时速断、III段定时限过流)。研究分析了不同DG接入位置、容量及故障点对保护系统的影响机理。仿真结果表明,DG接入会改变故障电流特性,可能导致三种典型问题:保护范围扩大引起误动、保护灵敏度下降导致拒动,以及保护选择性丧失。该研究为含DG配电网的保护配置与整定提供了理论依据和仿真参考,对保障分

huanghm88的专栏 268

【洛谷】P2709 小B的询问——莫队问题

每次询问,如果边界向外扩张,则重新计算当前的。普通的莫队做法:首先将所有询问按照询问边界进行排序(详见。行,每行一个整数,对应一个询问的答案。个询问,每个询问给定一个区间。个整数,表示 小B 的序列。累加和——即代码中变量。小B请你帮助他回答询问。

lcx_defender的博客 1374

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3365

洛谷P2709 小B的询问 基础莫队

洛谷P2709 小B的询问 标签 莫队 前言 死磕了一个多星期数论,把莫比乌斯反演,狄利克雷卷积,杜教筛,以及一些列和式的运算搞清楚了一些~由于洛谷的数论题都刷完了,所以先回到数据结构!初学莫队鸭 简明题意 求区间[L,R]中所有的数出现次数的平方和 思路 就是基础莫队的基础题了~下面是我的模板: void add(int x) {} void remove(int x)...

weixin_30580341的博客 140

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

洛谷 P2709 小B的询问【莫队】

小B有一个长为 nnn 的整数序列 aaa ,值域为 [1,k][1,k][1,k] 。 他一共有 mmm 个询问,每个询问给定一个区间 [l,r][l,r][l,r] ,求: ∑i=1kci2\sum\limits_{i=1}^k c_i^2i=1∑k​ci2​ 其中 cic_ici​ 表示数字 iii 在 [l,r][l,r][l,r] 中的出现次数。小B请你帮助他回答询问。 输入格式 第一行三个整数 n,m,kn,m,kn,m,k 。第二行 nnn 个整数,表示小B的序列。接下来的 mmm 行,每行两

memcpy0的博客 478

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

洛谷 P2709:[模板] 莫队 / 小 B 的询问 ← 基础莫队算法

● 基础莫队算法(Mo's Algorithm)​ 是一种用于解决离线区间查询问题的算法,由莫涛在 2010 年提出。莫队算法是‌基于分块思想‌构建的离线区间查询优化算法,分块为其提供‌排序依据与复杂度保障‌,两者关系可概括为"‌莫队=离线+暴力转移+分块排序‌"。‌

hnjzsyjyj的专栏 375

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

洛谷 P2709 小B的询问

算法简介 莫队算法由莫涛提出,通常用于解决多组区间查询问题。该算法通过离线询问,每次由一个询问区间变化到下一个区间,同时记录下答案;关键在于,该算法按一定的方法对询问区间进行排序,使得上述变化的次数相对较少。 普通莫队 这类莫队比较简单,题目中仅涉及区间查询,而不需要支持修改操作。将询问区间按左端点所在块编号升序排序,同时按 ...

Kevin 208

[洛谷 P2709] 小B的询问

P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。 输入输出格式 输入格式: 第一行,三个整数N、M、K。 第二行,N个整数,表示小B的序列。 接下来的M行,每行两...

a8233821的博客 161

【洛谷】P2709 小B的询问

小B请你帮助他回答询问。行,每行一个整数,对应一个询问的答案。个询问,每个询问给定一个区间。可以用莫队,询问之间可以平均。个整数,表示小B的序列。

数学、算法爱好者的博客 385

洛谷 P2709 小B的询问 莫队

题目描述 小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L…R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L…R]中的重复次数。小B请你帮助他回答询问。 输入格式 第一行,三个整数N、M、K。 第二行,N个整数,表示小B的序列。 接下来的M行,每行两个整数L、R。 输出格式 M行,每行一个整数,其中第i行的整数表示第i个询...

qq_44343213的博客 182

普通莫队

洛谷P2709小B的询问 #include<stdio.h> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<map> #include<queue> #include<stack> #include<math.h> #include<set> using namespac

weixin_45714726的博客 144

洛谷P2709 小B的询问 莫队

小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。 可是使用莫队算法,我们移动的时候,计算贡献即可,那么如何计算贡献呢?? 我们知道对于cnt[i]^2 ,也就数字i对应现在的值是cnt[i]^2,那么如果当前点的...

qq_40921866的博客 177

洛谷 P2709 小B的询问 题解

洛谷 P2709 小B的询问 题解 题目:在此。 查询平方,考虑如何算贡献。 假设原来的数是xxx,多了111,那么贡献增加(x+1)2−x2=2x+1(x+1)^2-x^2=2x+1(x+1)2−x2=2x+1。 假设现在的数是xxx,原来减了111,那么贡献减少(x+1)2−x2=2x+1(x+1)^2-x^2=2x+1(x+1)2−x2=2x+1。 与上题类似,用莫队维护即可。 #include<bits/stdc++.h> using namespace std; int n,m,k,q

linweitong2020的博客 187

P2709 小B的询问

https://www.luogu.org/problemnew/show/P2709 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <stack> #include...

NOIP提高组日志 144

洛谷 P2709 小B的询问(莫队 模板)

莫队

qq_38232157的博客 241
上一篇: 浅谈莫队算法--洛谷P1972 HH的项链
下一篇: 莫队算法:区间众数出现次数
tiany7
博客等级 码龄8年 16粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值