BZOJ 2120 数颜色 【带修改莫队】

camera 知识速查 本文总结了Camera开发中的常见问题排查方法和关键技术点。主要内容包括:I2C/MIPI不通的排查步骤、时序问题分析方法、Sensor/AF/Flash/PDAF的Bring Up流程、OTP调试方法、PDAF原理及调试、CTS/ITS问题解决思路、AE震荡解决方案、Systrace性能分析方法、Flicker产生原理、Tombstone问题定位等。还涉及V4L2框架解析、问题定位分层方法、Sensor Setting注意事项、时钟信号概念、第三方应用卡顿排查、大光圈概念、Monkey测试方法。 阅读详情

任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2120

2120: 数颜色

Time Limit: 6 Sec  Memory Limit: 259 MB
Submit: 10095  Solved: 4222
[Submit][Status][Discuss]

Description

墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。为了满足墨墨的要求,你知道你需要干什么了吗?

Input

第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。第2行N个整数,分别代表初始画笔排中第i支画笔的颜色。第3行到第2+M行,每行分别代表墨墨会做的一件事情,格式见题干部分。

Output

对于每一个Query的询问,你需要在对应的行中给出一个数字,代表第L支画笔到第R支画笔中共有几种不同颜色的画笔。

Sample Input

6 5
1 2 3 4 5 5
Q 1 4
Q 2 6
R 1 2
Q 1 4
Q 2 6

Sample Output

4
4
3
4

HINT

 

对于100%的数据,N≤10000,M≤10000,修改操作不多于1000次,所有的输入数据中出现的所有整数均大于等于1且不超过10^6。


2016.3.2新加数据两组by Nano_Ape

 

 

解题思路:

单点更新,xjb查询,莫队或者分块。

但是莫队需要离线,这里需要修改,怎么办呢?

引入第三个参数记录时间,根据时间点的不同更新答案。

 

AC code:

  1 #include <bits/stdc++.h>
  2 #define INF 0x3f3f3f3f
  3 #define LL long long
  4 using namespace std;
  5 const int MAXN = 1e4+10;
  6 const int MAXM = 1e6+10;
  7 int N, M;
  8 int h[MAXN], num[MAXN];
  9 int ans[MAXN], sum[MAXM];
 10 struct Query
 11 {
 12     int l, r, id, t;
 13 }Q[MAXN];
 14 
 15 struct Time
 16 {
 17     int ip, co, lt;
 18 }t[MAXN];
 19 int last[MAXN];
 20 
 21 bool cmp(Query a, Query b)
 22 {
 23     if(h[a.l] != h[b.l]) return h[a.l] < h[b.l];
 24     else{
 25         if(h[a.r] != h[b.r]) return h[a.r] < h[b.r];
 26         else return a.t < b.t;
 27     }
 28 }
 29 
 30 int update(int tt, int L, int R, int no)
 31 {
 32     int res = 0;
 33     int x = t[tt].ip, val = t[tt].co, lst = t[tt].lt;
 34     if(t[tt].ip >= L && t[tt].ip <= R){
 35         if(sum[num[x]] == 1) res--;
 36         sum[num[x]]--;
 37         if(no == 1){
 38             if(sum[val] == 0) res++;
 39             sum[val]++;
 40         }
 41         else if(no == -1){
 42             if(sum[lst] == 0) res++;
 43             sum[lst]++;
 44         }
 45     }
 46     if(no == 1) num[x] = val;
 47     else if(no == -1) num[x] = lst;
 48     return res;
 49 }
 50 
 51 int add(int x, int val)
 52 {
 53     int res = 0;
 54     if(val == 1 && sum[num[x]] == 0) res++;
 55     if(val == -1 && sum[num[x]] == 1) res--;
 56     sum[num[x]]+=val;
 57     return res;
 58 }
 59 
 60 int main()
 61 {
 62     scanf("%d %d", &N, &M);
 63     for(int i = 1; i <= N; i++){
 64         scanf("%d", &num[i]);
 65         last[i] = num[i];
 66     }
 67     int lim = pow(N, (double)2/3);
 68     for(int i = 1; i <= N; i++) h[i] = (i-1)/lim+1;
 69     int cnt = 0, Tcnt = 0;
 70     char com[5];
 71     for(int i = 1; i <= M; i++){
 72         scanf("%s", com);
 73         if(com[0] == 'Q'){
 74             cnt++;
 75             scanf("%d %d", &Q[cnt].l, &Q[cnt].r);
 76             Q[cnt].t = Tcnt;
 77             Q[cnt].id = cnt;
 78         }
 79         else{
 80             Tcnt++;
 81             scanf("%d %d", &t[Tcnt].ip, &t[Tcnt].co);
 82             t[Tcnt].lt = last[t[Tcnt].ip];
 83             last[t[Tcnt].ip] = t[Tcnt].co;
 84             //printf("%d %d\n", t[Tcnt].co, t[Tcnt].lt);
 85         }
 86     }
 87     sort(Q+1, Q+1+cnt, cmp);
 88 
 89     int L = 1, R = 0, T = 0, cur = 0;
 90     for(int i = 1; i <= cnt; i++){
 91         while(T < Q[i].t) cur+=update(++T, L, R, 1);
 92         while(T > Q[i].t) cur+=update(T--, L, R, -1);
 93         while(L < Q[i].l) cur+=add(L++, -1);
 94         while(L > Q[i].l) cur+=add(--L, 1);
 95         while(R < Q[i].r) cur+=add(++R, 1);
 96         while(R > Q[i].r) cur+=add(R--, -1);
 97         ans[Q[i].id] = cur;
 98     }
 99 
100     for(int i = 1; i <= cnt; i++){
101         printf("%d\n", ans[i]);
102     }
103 
104     return 0;
105 
106 }

 

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧 本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。 阅读详情

相关推荐

告别命令行恐惧!用nTopology可视化工具5分钟搞定三维Voronoi泡沫建模

本文介绍如何利用nTopology可视化工具快速生成三维Voronoi泡沫结构,无需编程即可完成复杂建模。Voronoi结构在轻量化设计、能量吸收和生物医学等领域具有重要应用,传统命令行方法门槛较高。通过nTopology的四步流程,用户可在5分钟内创建仿真就绪模型,大幅提升设计效率。

weixin_30764771的博客 427

BZOJ 2120: 数颜色【带修改莫队】

2120: 数颜色 【题目描述】 传送门 【题解】 带修改莫队模板题。 代码如下 我的写法跟他们的不同,感觉有问题,但是就是过了,我也不知道为什么。 #include<cmath> #include<cstdio> #include<cctype> #include<cstring&gt...

aiweiluan5095的博客 105

手把手教你用Isograph Reliability Workbench 14.0绘制可靠性方框图(RBD)

本文详细介绍了如何使用Isograph Reliability Workbench 14.0绘制可靠性方框图(RBD),从软件安装、界面设置到基础项目创建和高级功能应用,手把手指导工程师完成系统可靠性分析。通过实际案例演示,帮助用户掌握RBD建模技巧,提升系统可靠性评估效率。

weixin_26765287的博客 633

bzoj 2120 数颜色 带修改莫队

带修改莫队,每次查询前调整修改 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #define N 20005 using namespace std; int ...

aida9573的博客 131

spring boot 集成cas(一) 服务端搭建

简单点就是统一服务认证,多个系统一次登录。俗称单点登录。

慕孑晨的博客 1957

python批量生成CAD图纸

python批量生成CAD图纸

轩逸云的博客 1万+

带修改莫队——BZOJ2120/Luogu1903 数颜色

题面:BZOJ2120 洛谷上呢这题作为带修改莫队的模板题:Luogu1903 所以这题做法就是带修改莫队算法辣 如何在原来的离线莫队上面加上修改操作呢? 我们可以多维护一个时间,当区间做到某个询问时,把询问前面的修改全部加上,把后面的修改全部还原,这样就可以兹瓷修改操作了 具体实现呢和原来移动区间差不多,也是移动时间轴 然后排序的方法是三关键字:左端点处在的块 -> 右端点 -> 时

2333:jzqjzq的博客专栏 668

05 - GRACE数据处理-球谐展开与球谐综合

GRACE数据处理-球谐展开和综合前面在介绍GRACE相关理论的时候提到过下面的公式,从公式形式上可以看出,面密度变化和球谐系数(CS)之间是能够相互转换的,那这个转化的过程可以称为球谐展开,简单理解就是将全球网格数据转化为球谐系数的过程。而球谐综合可以看作是球谐展开的逆过程,利用球谐系数计算到全球格网分布。

weixin_43339605的博客 1050

【带修改莫队】BZOJ2120 数颜色

题面在这里带修莫队第一题……十分简单,没有什么可讲的 不会的可以看这里但是查了一个下午……心态奔溃了 原因竟然是pow(n,2/3)的2/3是整数除,外加一些奇怪的东西附上代码:#include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=10005,maxs=1000005; i

linkfqy 1257

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险

大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。

奶爸的编程之路,也就一周冷个三天 161

Cesium 场景特效之【全球海洋】GL2兼容版

Cesium 场景特效之【全球海洋】GL2兼容版

喜欢钻研前端和分享技术 1279

[BZOJ 2120]数颜色:带修改莫队

点击这里查看原题与普通莫队相比,本题需要单点修改,因此需要分别记录查询和修改两种操作。 修改操作需要记录: pos:修改的位置 x:修改前的值 查询操作需要记录: p:上一个修改操作的序号 id:在输入数据中的顺序 l,r:查询的区间 查询操作依然是按块排序,只不过每次查询时要处理好修改操作。 用一个vis数组记录该位置是否在目前的区间内,如果要修改一个在队中的位置,需要先出队,然后修改该位置的

SmallSXJ的博客 564

【机器人技术基础】MATLAB Robotics Toolbox PUMA560 运动学正逆解

机器人技术基础实验2报告 1. 实验目的和要求 2. 实验手段 2.1 实验原理 2.2 函数详解 3. 实验主要内容 4. 实验结果和分析 4.1 正运动学求解 例1 例2 4.2 逆运动学求解 例1 例2 1. 实验目的和要求 掌握常见形式的机器人的D-H坐标系建立方法、运动学建模; 正逆运动学分析与求解; 使用Robotics Toolbox对直角坐标机器人、圆柱坐标机器人、球坐标机器人、PUMA560其中之一建立运动学模型,正逆求解和仿真。 2. 实验手段 2.1

【人工智障 | 计算鸡视觉 | 机器孩】 1万+

[BZOJ 2120][数颜色][带修改的莫队]

[BZOJ 2120][数颜色][带修改的莫队]安利大法好,有关莫队算法可以关注这篇文章: https://zhuanlan.zhihu.com/p/25017840题目大意:处理两种询问,第一种是统计区间[L,R][L,R]中有几种不同的颜色,第二种是将颜色A修改成B。询问数和区间长度都<=10000,暴力完全可过……思路:和普通莫队同理,分块后用(l,r)(l,r)去更新(l+1,r),(l−

羽裳 445

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[BZOJ2120]数颜色(带修改莫队)

题目描述传送门题解和BZOJ2453相同,在这里可以看到分块的做法 而这道题同时又是一道带修莫队裸题 带修莫队大体方法如下: 1、将修改询问离线并分开,记录每一个修改之前最近的一次询问的编号 2、分块之后将区间排序,关键字为:左端点块的编号、右端点块的编号、记录的最近一次修改的编号 3、在查询每一次询问之前,判断当前做过的修改是否恰好是这次询问需要的修改,如果不够将其修改,修改多了的话恢复

zyf2000 823

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[国家集训队][bzoj2120] 数颜色 [带修改莫队]

题面: 传送门 思路: 这道题和SDOI2009的HH的项链很像,只是多了一个修改 模板套上去呀 莫队学习请戳这里:莫队 Code: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #i...

117

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

BZOJ2120 数颜色 【带修改莫队】

2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MB Submit: 6579  Solved: 2625 [Submit][Status][Discuss] Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支

Mychael的无声乐章 265

Luogu P1903 BZOJ 2120 数颜色 带修改的莫队

https://www.luogu.org/problemnew/show/P1903 之前切过这道题,复习莫队再切一遍,不过我之前写的是主席树和树状数组,也不知道我当时怎么想的…… 这个题卡常我没写快读只有开O2才能过,找这道题题解的时候发现了typedef这个东西,据说比define好用就写上了,虽然到最后也没用上…… 总复杂度O( n^ ( 5/ 3) ) 这个块的大小是n^ ( ...

weixin_30699463的博客 103

【bzoj2120: 数颜色】带修改莫队

2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MB Submit: 6501  Solved: 2593 [Submit][Status][Discuss] Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支

BinGoo0o0o的博客 419

bzoj 2120 数颜色 【带修改莫队模板】

解题思路:带修改莫队模板题,注意与普通莫队的区别: 1.块的大小为n23n^{\frac{2}{3}}。 2.询问排序时以左端点所在块为第一关键字,以右端点所在块为第二关键字,最后一次的修改为第三关键字。#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #inclu

cdsszjj的博客 425

BZOJ2120-数颜色(带修改莫队)

2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MB Submit: 7556 Solved: 3071 [Submit][Status][Discuss] Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中

swust5120160705的博客 248

BZOJ2120数颜色(带修改莫队)

莫队算法是一种数据结构的根号复杂度替代品,主要应用在询问[l,r]到询问[l+1,r]和[l,r+1]这两个插入和删除操作复杂度都较低的情况下。具体思想是:如果把一个询问[l,r]看做平面上的点(l,r)的话,两个询问状态之间的转移代价可以看做这两个点的曼哈顿距离。这样我们可以通过预处理出曼哈顿最小生成树解决这类问题,但莫队算法可以直接在根号复杂度下解决。 带修改莫队实际上是普通二维莫队的基础上...

weixin_30532987的博客 125
上一篇: Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) 【DFS】
下一篇: EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值