bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链
http://www.lydsy.com/JudgeOnline/problem.php?id=1878
之前用莫队做的,现在用树状数组
把每种数的第一个出现位置在树状数组中+1
nxt[i] 记录i后面第一个数字和i相同的位置
对于每一个询问[l,r],输出[1,r]内数的种类-只在[1,l-1]内数的种类
[1,r]内数的种类就是记录的 每种数的第一个出现位置
只在[1,l-1]内数的种类:
对于<l的i,对应的nxt[i]在树状数组中+1,
这样query(r)-query(l-1)时,
只在[1,l-1]内的被减走
既在[1,l-1] 又在[l,r] 内的减1又加1
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 50001
#define M 200001
#define K 1000001 int n;
int a[N];
struct node
{
int l,r;
int id;
}e[M]; bool have[K]; int nxt[N],last[K]; int c[N+]; int ans[M]; #define lowbit(x) x&-x void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} bool cmp(node p,node q)
{
return p.l<q.l;
} void add(int x)
{
while(x<=n+)
{
c[x]++;
x+=lowbit(x);
}
} int query(int x)
{
int sum=;
while(x)
{
sum+=c[x];
x-=lowbit(x);
}
return sum;
} int main()
{
read(n);
for(int i=;i<=n;++i)
{
read(a[i]);
if(!have[a[i]])
{
have[a[i]]=true;
add(i);
}
}
for(int i=n;i;--i)
{
if(!have[a[i]]) nxt[i]=n+;
else
{
if(!last[a[i]])
{
nxt[i]=n+;
last[a[i]]=i;
}
else
{
nxt[i]=last[a[i]];
last[a[i]]=i;
}
}
}
int m;
read(m);
for(int i=;i<=m;++i)
{
read(e[i].l);
read(e[i].r);
e[i].id=i;
}
sort(e+,e+m+,cmp);
int j=;
for(int i=;i<=m;++i)
{
while(j<e[i].l) add(nxt[j++]);
ans[e[i].id]=query(e[i].r)-query(e[i].l-);
}
for(int i=;i<=m;++i) cout<<ans[i]<<'\n';
}
1878: [SDOI2009]HH的项链
Time Limit: 4 Sec Memory Limit: 64 MB
Submit: 5156 Solved: 2549
[Submit][Status][Discuss]
Description
Input
Output
M行,每行一个整数,依次表示询问对应的答案。
Sample Input
1 2 3 4 3 5
3
1 2
3 5
2 6
Sample Output
2
4
bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链的更多相关文章
- BZOJ1878 SDOI2009 HH的项链 【莫队】
BZOJ1878 SDOI2009 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的 ...
- BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
1878: [SDOI2009]HH的项链 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1878 Description: HH有一串由 ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- [bzoj1878][SDOI2009]HH的项链_莫队
HH 的项链 bzoj-1878 SDOI-2009 题目大意:给定一个n个数的序列.m次询问,每次询问一段区间内数的种类数. 注释:$1\le n\le 5\cdot 10^4$,$1\le m\l ...
- BZOJ1878 [SDOI2009] HH的项链 [莫队,卡常]
BZOJ传送门,洛谷传送门 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义. ...
- [bzoj1878][SDOI2009]HH的项链_树状数组
HH的项链 bzoj-1878 SDOI-2009 题目大意:给定一个n个数的序列,m次查询.查询区间数的种类个数. 注释:$1\le n \le 5\cdot 10^4$,$1\le m\le 2\ ...
- bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战
http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...
- bzoj千题计划288:bzoj1876: [SDOI2009]SuperGCD
http://www.lydsy.com/JudgeOnline/problem.php?id=1876 高精压位GCD 对于 GCD(a, b) a>b 若 a 为奇数,b 为偶数,GCD ...
- bzoj千题计划287:bzoj1228: [SDOI2009]E&D
http://www.lydsy.com/JudgeOnline/problem.php?id=1228 打SG函数表,找规律: 若n是奇数m是奇数,则SG(n,m)=0 若n是偶数m是偶数,则SG( ...
随机推荐
- CommandoVM-虚拟机映像文件 | VM打开直接用
呵呵!自从火眼发布了这个CommandoVM,想必大家应该都挺激动,然而实际操作一下,基本炸裂-- 因为并没有给类似于kali这种直接安装的现成镜像,而是要通过github的脚本去完全网络安装 实际操 ...
- gym101522 [小熊骑士限定]La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017
西瓜队(划掉),Kuma Rider久违的第一场训练,四小时瞎打.jpg A.水题,排序 #include<cstdio> #include<iostream> #includ ...
- 《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程
编程是一件很有趣的事情.初次接触编程,你可能不知所措,别担心,这并不复杂.首先,为了让读者对编程有大概的了解,可以把编写Scratch程序的过程分成7个步骤(如图1.8).注意,这是理想状态.在实际的 ...
- JavaScript中执行环境和栈
在这篇文章中,我会深入理解JavaScript最根本的组成之一 : "执行环境(执行上下文)".文章结束后,你应该对解释器试图做什么,为什么一些函数/变量在未声明时就可以调用并且他 ...
- 这个不是第一次作业----艰难的安装Android studio历程
之前只听说过eclipse,后来从室友处得知,还有一个安卓的开发工具叫做Android studio,上网百度后发现网友普遍说Android studio比eclipse快,没想太多,删E装A. 在装 ...
- [BUG随想录] expat不兼容BUG
本周五软工团队项目的第一次前后端全部对接时,出了一个蛋疼的错误. 最初起因是小丽叔出于安全的考虑,使用守护进程来跑Web服务器.守护进程(Daemon)是运行在后台的一种特殊进程,如果服务器用root ...
- spring mvc自定义注解--访问时验证
作用:在访问controller的方法时,判断用户是否是登陆状态. step1:定义注解 import java.lang.annotation.ElementType; import java.la ...
- Objective-C runtime 机制
Runtime使用C语言结构体表示对象,用C语言函数表示方法,这些C语言函数和结构体被Runtime封装后,我们就可以在程序中执行创建,检查,修改类和对象和他们的方法 OC的Class其实是一个obj ...
- [转帖]你们知道LTE Cat.1到Cat.10 那Cat.0呢?
你们知道LTE Cat.1到Cat.10 那Cat.0呢? https://network.pconline.com.cn/638/6389637_all.html#content_page_3 1大 ...
- TCP 协议连接与关闭的握手
原文链接 http://blog.csdn.net/oney139/article/details/8103223 TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们 ...