BZOJ1878 [SDOI2009]HH的项链

HH的项链 (三种解法) (离线查询 + 线段树/树状数组 or 主席树) 题目链接: HH的项链 大致题意 解题思路 离线查询 + 线段树/ 树状数组 or 主席树 解法一: 主席树 主席树的思路其实比较好想. 这个题的问题本质是, 询问每段区间, 看看有多少个不重复的数字. 那么我们按照每一个位置, 都去建立一棵线段树, 树中维护[1, index]位置有多少个不重复元素. 当加到第index个位置时, 有两种情况: ①该数字在之前没有出现过 ②该数字在之前出现在pos位置过(pos < index). (关于位置pos的维护, 我们可以采用哈希表) 对于情况①, 我 阅读详情

原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1878

HH的项链

Description

HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。

Input

第一行:一个整数N,表示项链的长度。

第二行:N个整数,表示依次表示项链中贝壳的编号(编号为0到1000000之间的整数)。

第三行:一个整数M,表示HH询问的个数。

接下来M行:每行两个整数,L和R(1 ≤ L ≤ R ≤ N),表示询问的区间。

N ≤ 50000,M ≤ 200000。

Output

M行,每行一个整数,依次表示询问对应的答案。

Sample Input

6
1 2 3 4 3 5
3
1 2
3 5
2 6

Sample Output

2
2
4

题解

既然是套路题,那就水一篇博客吧。

按询问的右端点排序,离线所有询问,从左往右扫,记录每个数最后一次出现的地方并打上标记,查询区间内的标记个数就能得到答案。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=2e6+5,N=2e5+5;
struct sd{int le,ri,id;}ask[N];
bool operator <(sd a,sd b){return a.ri!=b.ri?a.ri<b.ri:a.le<b.le;}
int n,m,base=1,que[M],pre[M],ans[N],sum[M];
void in()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)scanf("%d",&que[i]);
    scanf("%d",&m);
    for(int i=1;i<=m;++i)scanf("%d%d",&ask[i].le,&ask[i].ri),ask[i].id=i;
}
void build(){while(base<n)base<<=1;}
void add(int v,int x){v+=base;for(;v;v>>=1)sum[v]+=x;}
int query(int ri)
{
    int le=base,ans=0;
    for(;le^ri^1;le>>=1,ri>>=1){if(le&1^1)ans+=sum[le+1];if(ri&1)ans+=sum[ri-1];}
    return ans;
}
void ac()
{
    build();
    sort(ask+1,ask+1+m);
    int v=1,le,ri;
    for(int i=1;i<=m;++i)
    {
        le=ask[i].le,ri=ask[i].ri;
        for(;v<=ri;++v)
        {
            if(pre[que[v]])add(pre[que[v]],-1);
            add(v,1);pre[que[v]]=v;
        }
        ans[ask[i].id]=query(base+1+ri)-query(base+le);
    }
    for(int i=1;i<=m;++i)printf("%d\n",ans[i]);
}
int main(){in();ac();}
StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转) StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。 阅读详情

相关推荐

OpenClaw 接入智谱 GLM-5-Turbo 龙虾套餐:完整避坑指南与 SOP

OpenClaw 接入智谱 GLM-5-Turbo 的核心在于“端点匹配”和“多渠道验证”。端点匹配:龙虾套餐必须用标准端点。多渠道验证:遇到 TUI 不显示时,用curl或飞书机器人验证,不要被 Bug 误导。希望这份 SOP 能帮你顺利跑通 OpenClaw + GLM-5-Turbo,享受强大的 AI 编程助手!

Aaron_liu20的博客 1703

[SDOI2009]HH的项链 --- 题解 (离线操作 + 树状数组)

可以发现在 1 -4, 2-4, 3-4这样的区间下一定是对的,那么这里就可以引出离线操作,即我们先记录有哪些查询的右端点属于 ai这个端点,这样枚举右端点,并对右端点之前的答案进行修改后,修改完成后,使用树状数组区间查询答案即可。这道题的难点是,如果 l1 -- r1 这个区间有四个不同的贝壳, l2 -- r2 这个区间有3个不同的贝壳,我们并不能得到 l1 -- r2 这个区间有7个不同的贝壳,因为可能这两个区间有相同的贝壳。如果考虑矩形这个区间答案为1,但实际为2。

weixin_73936404的博客 592

基于Xilinx Artix7 的FPGA高级应用 (二):千兆以太网通信(实战篇)第一期

本项目是基于Xlinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 我们先来复习一下以太网的基本通信原理: 当我们的计算机需要与局域网中另外的设备进行通信的时候,需要将数据传输到网卡进行编码,然后传输到线上,经过另一个设备的网卡解码成该设备能读取的数据。 关于以太网协议的知识在原理篇中已经讲过,不再重复,下面直接看接收代码: 首先注意我们的MAC和PHY通信选择的是GMII接口标准,发送数据一

工大技术底层人员的博客 4034

AcWing 2492:HH的项链 ← 基础莫队算法

​● 莫队算法的精髓在于奇偶性排序。也就是依据左端点 L 位于奇数块还是偶数块,决定右端点 R 从小到大排序还是从大到小排序。 (1)首先,利用分块算法将给定的 n 个数分成 sqrt(n) 个块; (2)然后,将多个询问的左端点 L 按块从小到大排序。 若 L 位于奇数块,则对右端点 R 从小到大排序。 若 L 位于偶数块,则对右端点 R 从大到小排序。 反之亦可。

hnjzsyjyj的专栏 1036

地理空间坐标系统-不同椭球基准间的坐标转换

基于同一个椭球基准,可以构建三类地理空间坐标系:大地球面坐标系、大地空间直角坐标系、大地投影坐标系。由于坐标原点和椭球长短半径等都相同,这三类坐标系之间可以通过无损的数学方法相互之间进行转换。那么现在问题来了,不同椭球基准(在全球范围来看存在成百上千的椭球基准)之间的坐标怎么转换?比如,北京54、西安80、国家2000,特别是在我国,现在主推国家2000坐标系,那么如何将历史的测绘成果(北京54和...

技术改变世界 8336

信道估计之MMSE算法

信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声大小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误

大白的博客 2万+

洛谷P1972 [SDOI2009] HH的项链 题解(莫队)

本文介绍了使用莫队算法解决区间不同数字统计问题的方法。通过将序列分块并对查询进行特殊排序,将时间复杂度从O(nm)优化到O(n√n)。文章详细说明了暴力扫描法的缺陷,阐述了莫队算法的排序原理和奇偶性优化技巧,并提供了完整代码实现框架,包括分块处理、查询排序和双指针移动策略。该算法在保持较低时间复杂度的同时,通过预处理和优化技巧提升了实际运行效率。

Little_Zyl的博客 639

Field _II 仿真 学习笔记

参考Field II的使用说明,进行了四个例子的练习。仿真程序和结果如下: PURPOSE1:Calculate the received response from all elements of a linear array and plot the responses and the summed response 【计算来自所有线性阵元的接收响应,并绘制该响应以及叠加响应。】 >>

qq_34018578的博客 1万+

P1972 [SDOI2009] HH的项链(莫队算法)

HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?于是,他只好求助睿智的你,来解决这个问题。第二行 n 个正整数 ai​,表示项链中第 i 个贝壳的种类。接下来 m 行,每行两个整数 l,r,表示询问的区间。输出 m 行,每行一个整数,依次表示询问对应的答案。第三行一个整数 m,表示 H 询问的个数。

zhi6fui的博客 321

fMRI脑影像特征提取——静息态与任务态,ALFF/fALFF和ReHo(Dpabi,Rest1.8)

任务态和静息态是大脑的两种状态,前者主要是指大脑在执行记忆、识别以及运动等具体任务时的状态,静息态则是指大脑不执行具体认知任务、保持安静、放松、清醒时的状态,是大脑所处的各种复杂状态中最基础和最本质的状态。任务态fMRI分析有非常悠远的历史,而静息态fMRI自1995年biswal教授及其同事率先报告静息态fMRI具有生理意义后,越来越多的人进入了静息态的研究领域。任务态fMRI主流的分析方法是模型驱动(GLM+HRF),也可以引用静息态fMRI

意疏的学习笔记 6万+

相机Camera日志分析之二:高通CamX架构对应Google原生Camera HAL3架构的标准API接口一级日志详细分析注释

【思维决定成长高度】当前讲述的是Camera领域log分析梯度分级讲解,讲究的是一种分析技巧,分析思维,一种感悟。技术路线的提升空间,需要更多开发技巧和开发学习能力去提升。技术大拿分析问题,可以从日志快速定位问题并解决问题,有充分的时间去学习更多知识,成长速度极快。同一起跑线,学习能力,开发效率等等都决定了程序员的成长提升空间。记得我毕业三年,同学之间的差距无限拉大,一些人还在几千块薪水,你已经是他的四五倍了,人与人的差距就是短短几年就拉开了。

429

bzoj1878[SDOI2009]HH的项链

bzoj1878[SDOI2009]HH的项链 题意: N个数,M个询问求区间[L,R]中包含了多少种不同的数。 题解: 莫队好像可以做~但正解是树状数组。先将询问按左端点排序,并求出每个数的下一个与它相等的数的位置,同时将每个数第一次出现的位置在树状数组中置为1,此时query(x)求出来的就是1到x里有多少个不同的数。枚举排序后的询问,将当前左端点向右移动,每右移一位就将原位...

anheku1562的博客 146

Weka学习笔记01:初探Weka世界

下载、安装和启动Weka、Weka数据格式

howard2005的专栏 1472

BZOJ-1878-HH的项链-SDOI2009

描述 有n个位置(n ≤ 50000), 每个位置有一个颜色(颜色数 ≤ 200000). 询问[L, R]区间的颜色种数. 分析 两种解法都做了一下 1. 离线树状数组统计HZWER:将所有询问按照左端点进行排序, 将所有颜色的第一个点x, 将a[x]++, 然后从左往右扫, 扫到一个点x, 将a[next[x]]++, 碰到一个询问l,r输出sum[r]-su

ghy1953 1206

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BZOJ_1878_[SDOI2009]HH的项链_莫队

BZOJ_1878_[SDOI2009]HH的项链_莫队 Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一 个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答。。。因为项链实在是太长...

90

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

BZOJ1878 SDOI2009 HH的项链 【莫队】

BZOJ1878 SDOI2009 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答...

weixin_30414155的博客 83

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

BZOJ 1878: [SDOI2009]HH的项链

二次联通门 :BZOJ 1878: [SDOI2009]HH的项链 /* BZOJ 1878: [SDOI2009]HH的项链 莫队水过 记录一个count数组 来记录每个数出现了几次 缩小区间时只要看是否只出现一次 扩张区间时只要看看是否出现过即可 */ ...

weixin_30377461的博客 81

SDOI2009 bzoj1878 HH的项链

1878: [SDOI2009]HH的项链 Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 4988  Solved: 2472 [Submit][Status][Discuss] Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的

hpp__hpp的博客 254

BZOJ 1878 [SDOI2009]HH的项链 【莫队】

任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=1878 1878: [SDOI2009]HH的项链 Time Limit:4 SecMemory Limit:64 MBSubmit:7548Solved:3718[Submit][Status][Discuss] Description HH有一串由各种漂亮的...

Mod_13的博客 149

bzoj1878 [SDOI2009]HH的项链

Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。 Input 第一行:一个整数N

wfj_2048的博客 287

Bzoj 1878: [SDOI2009]HH的项链 莫队

1878: [SDOI2009]HH的项链 >原题链接< Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一 个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答。...

dianjia2824的博客 245

BZOJ 1878: [SDOI2009]HH的项链【莫队】

1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MB Description HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然...

aiweiluan5095的博客 181

bzoj 1878 [SDOI2009]HH的项链

区间离线操作不带修改的万能做法就是莫队了。

lalala 684
上一篇: LOJ2330「清华集训 2017」榕树之心
下一篇: [2018.07.10 T1]叠盒子
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值