BZOJ2120_数颜色_KEY
裸的带修莫队。
在Sort时如果左右区间都在同一块中,就按询问的修改的先后Sort。
对于每次查询判断向前或向后修改。
当size为N*2/3时据说是最优。O(N^(3/5))。
code:
/**************************************************************
Problem: 2120
User: yekehe
Language: C++
Result: Accepted
Time:884 ms
Memory:5652 kb
****************************************************************/
#include <cmath>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
inline char tc(void){
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
int read()
{
char c;while(c=tc(),c<''||c>'');
int x=c-'';while(c=tc(),c>=''&&c<='')x=(x<<)+(x<<)+c-'';
return x;
}
int N,M,size,a[],D[],Be[],ans,sum[],A[],l,r,t;
struct Query{int l,r,tim,id;}Q[];int Qs;
struct Change{int x,bef,to;}C[];int Cs;
int cmp(Query x,Query y){
return Be[x.l]==Be[y.l]?
(Be[x.r]==Be[y.r]?x.tim<y.tim:x.r<y.r)
:x.l<y.l;
}//CMP函数
void re(int x,int d){
sum[x]+=d;
if(!sum[x]&&d<)ans--;
if(sum[x]==&&d>)ans++;
}
int ct(int x,int y){
if(l<=x&&x<=r)re(a[x],-),re(y,);
a[x]=y;
}
int main()
{
N=read(),M=read();
for(int i=;i<=N;i++)a[i]=read(),D[i]=a[i];
int x,y;char c;
for(int i=;i<=M;i++){
while(c=tc(),c!='Q'&&c!='R');
x=read(),y=read();
if(c=='Q')Q[++Qs]=(Query){x,y,Cs,Qs};
else C[++Cs]=(Change){x,D[x],y},D[x]=y;
}
size=pow(N,0.66666);
for(int i=;i<=N;i++)
Be[i]=(i-)/size+;
sort(Q+,Q+Qs+,cmp);
l=,r=,t=;
for(int i=;i<=Qs;i++){
while(t<Q[i].tim)t++,ct(C[t].x,C[t].to);//向后修改
while(t>Q[i].tim)ct(C[t].x,C[t].bef),t--;//向前修改
while(l<Q[i].l)re(a[l],-),l++;
while(l>Q[i].l)re(a[--l],);
while(r<Q[i].r)re(a[++r],);
while(r>Q[i].r)re(a[r],-),r--;
A[Q[i].id]=ans;
}
for(int i=;i<=Qs;i++)
printf("%d\n",A[i]);
return ;
}
BZOJ2120_数颜色_KEY的更多相关文章
- BZOJ 2120: 数颜色
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3623 Solved: 1396[Submit][Status][Discuss] ...
- 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 653 Solved: 283[Submit][Status][Discuss] ...
- BZOJ 2120 数颜色(带修改的莫队)
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MB Submit: 3478 Solved: 1342 [Submit][Status][Discus ...
- BZOJ 2120: 数颜色 分块
2120: 数颜色 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php? ...
- Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 2645 Solved: 1039[Submit][Status][Discuss] ...
- bzoj2120 / P1903 [国家集训队]数颜色 / 维护队列(带修改莫队)
P1903 [国家集训队]数颜色 / 维护队列 带修改的莫队 在原有指针$(l,r)$上又添加了时间指针$t$ 贴一段dalao的解释 带修改的莫队,和原版莫队相比,多了一个时间轴 原版莫队是将区间( ...
- BZOJ 2120 数颜色 (带修莫队)
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 6367 Solved: 2537[Submit][Status][Discuss] ...
- Luogu 1903 数颜色 | 分块
Luogu 1903 数颜色 | 分块 莫队不会啊-- 这道题直接分块也能卡过! 这道题的做法很有趣:对于每个位置i,记录它的颜色a[i]上一次出现的位置,记为pre[i]. 这样在查询一个区间[l, ...
- P3939 数颜色
目录 题目 思路1(待修莫队) 思路2(vector+二分) 代码1 代码2 题目 P3939 数颜色 思路1(待修莫队) 哇,这不是莫队模板题吗 3e5,TLE45分 不行 我有信仰啊 pow(n, ...
随机推荐
- HTML5-入门3。
CSS选择器. 什么是标签选择器?作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然后设置属性 格式: 标签名称{ 属性:属性值 } 标签选择器(html中的标签名称) id选择器( ...
- ETL探索之旅
ETL(Ectract Transform Load) 抽取-转换-加载 ETL 商业软件: Informatica IBM DataStage Microsoft SSIS Oracle ODI ...
- 如何制作 Objective-C 的UML图 [1]
如何制作 Objective-C 的UML图 [1] 说明 本教程旨在教你如何制作 Objective-C 的UML图,此为第一部分. 步骤 注册(在线制作) https://www.processo ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)
一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...
- [2018HN省队集训D1T1] Tree
[2018HN省队集训D1T1] Tree 题意 给定一棵带点权树, 要求支持下面三种操作: 1 root 将 root 设为根. 2 u v d 将以 \(\operatorname{LCA} (u ...
- 021.13 IO流 RandomAccessFile对象
对象和方法:RandomAccessFile:文件操作对象,Java提供getFilePointer:获取文件指针 特点:1.只能操作文件2.既能读,又能写3.里面维护了一个数组,内部定义了字符的读和 ...
- BZOJ 2763 飞行路线 BFS分层
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2763 题目大意: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司 ...
- JNLP应用程序无法打开的解决办法
JNLP应用程序无法打开: 1.控制面板-Java-Java 选项卡-查看.用户选项卡勾选对应版本JDK(没有就添加,路径填类似:D:\Program Files\Java\jre6\bin\java ...
- java面向切面编程总结-面向切面的本质
面向切面的本质:定义切面类并将切面类的功能织入到目标类中: 实现方式:将切面应用到目标对象从而创建一个新的代理对象的过程.替换: 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Point ...
- cocos2d-x3.0 柱图
画柱图就是多画几个矩形之后放在一起,这个实现了基本功能还不够完好假设要用到项目中须要自己改动. 原文地址:http://blog.csdn.net/qqmcy/article/details/2598 ...