洛谷——P1972 [SDOI2009]HH的项链(线段树)
P1972 [SDOI2009]HH的项链
HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。
莫队的做法被卡了,所以刷一篇线段树的做法,由于是离线,限制并不算太多
把询问按照右端点排序,从序列左端点向右扫,进行三个操作:
$1$.将上一个与$c[i]$相同的点变为0
$2$.将这个点变为1
$3$.询问右端点固定的区间的答案
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm> #define N 1000000
using namespace std; struct node{
int sum;
}tr[N];
int c[N],last[N];
struct kpde{
int l,r,id,an;
}p[N]; bool cmp(kpde A,kpde B){
return A.r<B.r;
}
bool ccmp(kpde A,kpde B){
return A.id<B.id;
} void pushup(int k){
tr[k].sum=tr[k<<].sum+tr[k<<|].sum;
} void change(int k,int l,int r,int X,int val){
if(l==r){
tr[k].sum=val;return;
}
int mid=(l+r)>>;
if(X<=mid) change(k<<,l,mid,X,val);
else change(k<<|,mid+,r,X,val);
pushup(k);
} int ask(int k,int l,int r,int ql,int qr){
if(l>=ql&&r<=qr) return tr[k].sum;
int mid=(l+r)>>,ans=;
if(ql<=mid) ans+=ask(k<<,l,mid,ql,qr);
if(qr>mid) ans+=ask(k<<|,mid+,r,ql,qr);
return ans;
} int n,m; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&c[i]);
scanf("%d",&m);
for(int i=;i<=m;i++) scanf("%d%d",&p[i].l,&p[i].r),p[i].id=i;
sort(p+,p++m,cmp); int now=;
for(int i=;i<=n;i++){
if(last[c[i]])
change(,,n,last[c[i]],);
last[c[i]]=i;
change(,,n,i,);
while(p[now].r==i){
p[now].an=ask(,,n,p[now].l,p[now].r);
now++;
}
}
sort(p+,p++m,ccmp); for(int i=;i<=m;i++)
printf("%d\n",p[i].an); return ;
}
洛谷——P1972 [SDOI2009]HH的项链(线段树)的更多相关文章
- 洛谷P1972 [SDOI2009]HH的项链(树状数组)
题目链接: https://www.luogu.org/problemnew/show/P1972 题目描述: HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后 ...
- 洛谷 P1972 [SDOI2009]HH的项链(树状数组,离线)
传送门 解题思路 因为是求区间的不同种类数,所以我们用树状数组(貌似并没有什么直接联系) (...表示到) 还是和原来一样,用s[i]来表示a[i-lowbit(i)]...a[i]的种类数. 因为有 ...
- 洛谷 P1972 [SDOI2009]HH的项链 解题报告
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- 洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- 洛谷P1972 [SDOI2009]HH的项链 题解
[SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不 ...
- 洛谷 P1972 [SDOI2009]HH的项链——树状数组
先上一波题目 https://www.luogu.org/problem/P1972 这道题是询问区间内不同数的个数 明显不是正常的数据结构能够维护的 首先考虑 因为对于若干个询问的区间[l,r],如 ...
- [洛谷P1972][SDOI2009]HH的项链
题目大意:给你一串数字,多次询问区间内数字的种类数 题解:莫队 卡点:洛谷数据加强,开了个$O(2)$ C++ Code: #include <cstdio> #include <a ...
- 洛谷 P1972"[SDOI2009]HH的项链"(离线+树状数组 or 在线+主席树)
传送门 •题意 给你一个包含 n 个数的数组 $a$: 有 m 此操作,每次操作求区间 [l,r] 中不同数的个数: •题解(离线+树状数组) 以样例 $[1,2,3,4,3,5]$ 为例,求解区间 ...
随机推荐
- mouse_event function
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx
- SpringMVC 运行过程
加入jar包 在web.xml中配置DispatherServlet 加入SpringMVC配置文件 编写处理请求的处理器,并表示为处理器 编写视图 可见的运行流程: 实际的运行流程:
- Ubuntu 16.04 + github page + hexo 搭建博客
1. 安装nodejs: sudo apt-get install nodejs-legacy 2.安装nvm : wget -qO- https://raw.github.com/creatio ...
- YTU 2641: 填空题:静态成员---计算学生个数
2641: 填空题:静态成员---计算学生个数 时间限制: 1 Sec 内存限制: 128 MB 提交: 267 解决: 206 题目描述 学生类声明已经给出,在主程序中根据输入信息输出实际建立的 ...
- python 视频逐帧保存为图片
import cv2 import os def save_img(): video_path = r'F:\test\video1/' videos = os.listdir(video_path) ...
- CF 600 E Lomsat gelral —— 树上启发式合并
题目:http://codeforces.com/contest/600/problem/E 看博客:https://blog.csdn.net/blue_kid/article/details/82 ...
- softmax function in c++
#include <iostream> #include <vector> #include <cmath> #include <algorithm> ...
- Oracle 10g 10.2.0.4的group by BUG |ORA-00979 not a GROUP BY expression|
乍看 ORA-00979 not a GROUP BY expression 这个提示估计很快能将其定位为SQL语句写得有问题,实际上有可能你遇到了一个Oracle的BUG,这个BUG常见于10.2. ...
- Spring的 @ExceptionHandler注解无效问题
如果你想设置了@ExceptionHandler注解进行异常捕获返回异常信息,但是Debug调试时,代码并未进到被@ExceptionHandler注解标注的方法里,那么就检查你的配置文件是否包含 & ...
- map的遍历方式(使用Junit测试)
package cn.sdut.lah; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...