博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1878 hh的项链(简单莫队)
阅读量:5158 次
发布时间:2019-06-13

本文共 1110 字,大约阅读时间需要 3 分钟。

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
 
题解:额,莫队入门题,真的非常好理解,学会以后只能orz莫队,实在是太暴力了,正因为暴力,莫队可以做很多只有暴力才能搞的区间查询,整个代码难度主要在一些细节上,但其实实在不行可以背啊~
代码如下:
#include
#include
#include
#include
#include
using namespace std;struct node{ int l,r,id;}q[200020];int a[50050],cnt[1000010],n,m,sz,sum,ans[200020];int block(int x){ return (x+1)/sz;}int cmp(node a,node b){ if(block(a.l)==block(b.l)) { return a.r
q[i].l) add(--nowl); while(nowr
q[i].r) del(nowr--); ans[q[i].id]=sum; } for(int i=1;i<=m;i++) { printf("%d\n",ans[i]); }}

 

转载于:https://www.cnblogs.com/stxy-ferryman/p/8915480.html

你可能感兴趣的文章
Sourcetree 集成 Azure DevOps Server(Git)
查看>>
CIFAR-10数据集读取
查看>>
选择排序、冒泡排序、获取数组中的最大值
查看>>
Windows 2008 R2 SP1部署WSUS 3.0 SP2
查看>>
CentOS 7下安装Logstash ELK Stack 日志管理系统(下)
查看>>
Android Start感触
查看>>
freemarker 自己定义指令
查看>>
【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
查看>>
6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
查看>>
这个周末我太累了
查看>>
jquery 重复事件
查看>>
一旦rhel5.8造成只读文件系统ORA-00354: corrupt redo log block header
查看>>
数据泵expdp,impdp使用结
查看>>
Android读取JSON格式数据
查看>>
SAP HANA开发中常见问题- 基于SAP HANA平台的多团队产品研发
查看>>
内部元素一一相应的集合的算法优化,从list到hashmap
查看>>
客户端通过HTTP协议与服务端交换数据
查看>>
更新客户信息
查看>>
淘宝,京东,苏宁易购技术架构(路线)分析和比较
查看>>
游戏中的心理学(一):认知失调有前提条件
查看>>