博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SDOI2009]HH的项链
阅读量:4557 次
发布时间:2019-06-08

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

Solution

这是一道很经典的题目吖

莫队的话,在洛谷上吸吸氧就能过了

其实这题是由很多做法的吧

我们一种颜色显然只有在它第一次出现的时候有贡献

或者说,我们让它在最后一次出现的时候有贡献

然后把按照r从小到大排序,用树状数组维护每个点最后一次出现的位置(权值为1,之前的为0)

然后区间求和就行啦

主席树也能做?

这下我们让每个数第一次出现有贡献~

对于每个位置,记下该数上次出现的位置,如果小于l,那么它是第一次出现的

维护一个last的权值线段树,然后每次查询区间中小于l的数

Code 

#include
#define ll long long#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;}#define MN 500005int col[MN],l,r,pos[MN];struct ques{ int l,r,id; bool operator<(const ques&x) const{return pos[l]^pos[x.l]?pos[l]
q[i].r;--R) ans-=(num[col[R]]==1),num[col[R]]--; for(;L>q[i].l;--L) ans+=(!num[col[L-1]]),num[col[L-1]]++; for(;L


Blog来自PaperCloud,未经允许,请勿转载,TKS!

转载于:https://www.cnblogs.com/PaperCloud/p/10166288.html

你可能感兴趣的文章
使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享
查看>>
深入理解计算机系统(1.4)---并发与并行、浅谈抽象
查看>>
函数依赖的公理化系统
查看>>
rabbitmq学习(四):利用rabbitmq实现远程rpc调用
查看>>
侯捷C++学习(二)
查看>>
EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
查看>>
web项目中全局常量的添加
查看>>
搬运工程 启动!
查看>>
局部加权回归(LWR) Matlab模板
查看>>
Connect to the DSP on C6A8168/DM8168/DM8148 using CCS
查看>>
hibernate在使用getCurrentSession时提示no session found for current thread
查看>>
【Luogu1471】方差(线段树)
查看>>
DEV中svg图标的使用
查看>>
Codefroces Gym101572 I.Import Spaghetti-有向图跑最小环输出路径(Floyd)
查看>>
有关位运算的操作+二进制状态压缩
查看>>
Eclipse插件 -- 阿里巴巴扫描编码规插件
查看>>
(1.1)学习笔记之mysql体系结构(内存、进程、线程)
查看>>
markdown测试
查看>>
Java-Maven-Runoob:Maven 依赖管理
查看>>
杂项-Log:log4net
查看>>