BZOJ 2120 带修莫队
思路:
暴力能过的 嘿嘿嘿
我是来练带修莫队的嗯 复杂度 O(n^5/3)
//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1050000;
int n,m,a[N],cnt1,cnt2,Block,block[N],xx,yy,ans,sum[N],last[N],Ans[N];
char op[105];
struct Query{
int L,R,time,id;
Query(int LL,int RR,int TT,int II){
L=LL,R=RR,time=TT,id=II;
}Query(){}
}query[N];
struct Change{
int position,color,lastcolor;
Change(int II,int CC,int LL){
position=II,color=CC,lastcolor=LL;
}Change(){}
}change[N];
bool operator<(Query a,Query b){
if(block[a.L]==block[b.L]){
if(a.R!=b.R)return a.R<b.R;
return a.time<b.time;
}
return block[a.L]<block[b.L];
}
void update(int x,int f){
if(f==1){if(!sum[x])ans++;sum[x]++;}
else if(f==-1){if(sum[x]==1)ans--;sum[x]--;}
}
int main(){
scanf("%d%d",&n,&m);
Block=(int)pow(n,2.0/3.0);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),last[i]=a[i],block[i]=(i-1)/Block+1;
for(int i=1;i<=m;i++){
scanf("%s%d%d",op,&xx,&yy);
if(op[0]=='Q')query[++cnt1]=Query(xx,yy,cnt2,cnt1);
else change[++cnt2]=Change(xx,yy,last[xx]),last[xx]=yy;
}
sort(query+1,query+1+cnt1);
for(int L=1,R=0,i=1,T=0;i<=cnt1;i++){
for(;T<query[i].time;T++){
if(change[T+1].position>=L&&change[T+1].position<=R)
update(a[change[T+1].position],-1),update(change[T+1].color,1);
a[change[T+1].position]=change[T+1].color;
}
for(;T>query[i].time;T--){
if(change[T].position>=L&&change[T].position<=R)
update(a[change[T].position],-1),update(change[T].lastcolor,1);
a[change[T].position]=change[T].lastcolor;
}
for(;R<query[i].R;R++)update(a[R+1],1);
for(;R>query[i].R;R--)update(a[R],-1);
for(;L<query[i].L;L++)update(a[L],-1);
for(;L>query[i].L;L--)update(a[L-1],1);
Ans[query[i].id]=ans;
}
for(int i=1;i<=cnt1;i++)printf("%d\n",Ans[i]);
}
BZOJ 2120 带修莫队的更多相关文章
- bzoj 2120 带修改莫队
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 7340 Solved: 2982[Submit][Status][Discuss] ...
- bzoj 2120 数颜色 (带修莫队)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2120 题意:两种操作:Q 询问区间 l - r 内颜色的种类 ,R 单点修改 思路 ...
- BZOJ 2120 数颜色 (带修莫队)
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 6367 Solved: 2537[Submit][Status][Discuss] ...
- BZOJ 3052/Luogu P4074 [wc2013]糖果公园 (树上带修莫队)
题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h&g ...
- BZOJ 4129 Haruna’s Breakfast (分块 + 带修莫队)
4129: Haruna’s Breakfast Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 835 Solved: 409[Submit][St ...
- BZOJ 3052 树上带修莫队
思路: 就是把带修莫队移到了树上 块的大小开到(n^2/3)/2 比较好- 这是一个卡OJ好题 //By SiriusRen #include <cmath> #include <c ...
- BZOJ 4129 Haruna’s Breakfast ( 树上带修莫队 )
题面 求树上某路径上最小的没出现过的权值,有单点修改 添加链接描述 分析 树上带修莫队板题,问题是怎么求最小的没出现过的权值. 因为只有nnn个点,所以没出现过的最小值一定在[0,n][0,n][0, ...
- 【BZOJ-3052】糖果公园 树上带修莫队算法
3052: [wc2013]糖果公园 Time Limit: 200 Sec Memory Limit: 512 MBSubmit: 883 Solved: 419[Submit][Status] ...
- 「洛谷1903」「BZOJ2120」「国家集训队」数颜色【带修莫队,树套树】
题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是 ...
随机推荐
- android系统源码下载
ubuntu 安装git curl python 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中: mkdir ~/bin PATH=~/bin:$PATH 下载 Repo 工具,并确 ...
- python爬虫:爬取凤凰指数
在知乎上看到的这个问题,讲讲我爬取过程中遇到的问题: 1.循环爬取其他页面,在其他项目中用循环一般可以搞定,可是这个,第一页和第二第三页的表格是不同的,所以要重新写规则,我懒,写了第一页后,就不想在写 ...
- 服务器控件使用eval()绑定属性出现服务器标记的格式不正确
在使用asp.net服务器端控件的时候,想要动态绑定控件某属性的值,或者动态绑定控件事件方法的参数,例如一个<asp:RadioButton ID="RadioButton5" ...
- @RestController无法自动注入的问题
今天在练习spring boot的时候,发现在ide中无法将@RestController注入到代码中,@RestController注解依赖的包是org.springframework.web,检 ...
- SpringMVC(二)@RequestMapping
学习@RequestMapping注解,参考Spring API 1.@RequestMapping可以修饰在类类型和方法上 ①.修饰在类定义上: 提供初步的URL映射,相对于web应用 ...
- js 目录树
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- img标签过滤加fs模块实现图片文件缓存
方法一:function iCache(selector) { selector.each(function(data) { //msg(data); ! function(data) { var u ...
- 在Linux Centos 7.2 上安装指定版本Docker 17.03
相关资料链接: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce 先清空下“历史” yum insta ...
- IOS开发:使用lipo合并armv7,i386,armv7s库文件
假设多个版本的lib分别是 libxxx.armv7.a , libxxx.armv7s.a, libxxx.i386.a我们的目标是 把他们合并成超级通用版的libxxx.a 打开命令行 Term ...
- Project Euler 24 Lexicographic permutations( 康拓逆展开 )
题意: 排列指的是将一组物体进行有顺序的放置.例如,3124是数字1.2.3.4的一个排列.如果把所有排列按照数字大小或字母先后进行排序,我们称之为字典序排列.0.1.2的字典序排列是:012 021 ...