洛谷P1903 [国家集训队]数颜色 / 维护队列 [带修改莫队]

洛谷P1903 [国家集训队]数颜色 / 维护队列 题目描述 题解 第一眼看过去是带修莫队。效率 O(n53)O(n^{\frac{5}{3}})O(n35​) 。可惜洛谷给出的标签是树套树,于是思考一下怎么用数据结构维护。 如果没有修改的话,我们考虑怎么在线计算答案,考虑到一种颜色只能计算一次,所以可以想到如果 [l,r][l,r][l,r] 中有的颜色的前驱出现在 [0,l−1][0,l-1][0,l−1] (没有即 000 ),那就造成贡献,... 阅读详情

传送门
题意:有一个长度为n的数组,q次操作,询问[L,R]区间不同数字个数或者修改某个位置的数字

题解:带修改莫队模板题。比普通的莫队题多了个修改操作,带修改莫队也就比普通莫队多了一维时间,记录之前一次修改操作的位置,具体实现看代码

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
#define debug(x) cout<<#x<<" is "<<x<<endl;

const int maxn=1e6+5;

struct ac1{
    int id;
    int L;
    int R;
    int pre;
}q[maxn];

struct ac2{
    int pos;
    int col;
}cg[maxn];

int a[maxn],in[maxn],len,ans,acc[maxn];

bool cmp(struct ac1 aa,struct ac1 bb){
    if((aa.L/len+(aa.L%len!=0))!=(bb.L/len+(bb.L%len!=0)))return (aa.L/len+(aa.L%len!=0))<(bb.L/len+(bb.L%len!=0));
    else if((aa.R/len+(aa.R%len!=0))!=(bb.R/len+(bb.R%len!=0)))return (aa.R/len+(aa.R%len!=0))<(bb.R/len+(bb.R%len!=0));
    return aa.pre<bb.pre;
}

void add(int pos,int val){
    in[a[pos]]+=val;
    if(in[a[pos]]==1&&val>0)ans++;
    if(in[a[pos]]==0&&val<0)ans--;
}

void chg(int num,int i){
    if(cg[num].pos>=q[i].L&&cg[num].pos<=q[i].R){
        in[a[cg[num].pos]]--;
        in[cg[num].col]++;
        if(in[a[cg[num].pos]]==0)ans--;
        if(in[cg[num].col]==1)ans++;
    }
    swap(a[cg[num].pos],cg[num].col);
}

int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    int id1,id2;
    id1=id2=0;
    for(int i=1;i<=m;i++){
        char ch[5];
        scanf("%s",ch);
        if(ch[0]=='Q'){
            ++id1;
            q[id1].id=id1;
            scanf("%d%d",&q[id1].L,&q[id1].R);
            q[id1].pre=id2;
           // debug(id2);
        }
        else{
            ++id2;
            scanf("%d%d",&cg[id2].pos,&cg[id2].col);
        }
    }
    len=pow(n,0.67);
    sort(q+1,q+1+id1,cmp);
    int l,r,tim;
    l=r=tim=0;
    for(int i=1;i<=id1;i++){
        while(l>q[i].L){
            add(--l,1);
        }
        while(r<q[i].R){
            add(++r,1);
        }
        while(l<q[i].L){
            add(l++,-1);
        }
        while(r>q[i].R){
            add(r--,-1);
        }
        while(tim>q[i].pre){
            chg(tim--,i);
        }
        while(tim<q[i].pre){
            chg(++tim,i);
        }
        acc[q[i].id]=ans;
    }
    for(int i=1;i<=id1;i++)printf("%d\n",acc[i]);
    return 0;
}

农经权二轮延包—地块示意图生成 本文介绍了地块示意图制作软件的使用方法及模板制作要点。软件通过设置六个参数(示意图模板、属性数据、地块DBF、导航图、地块图片及存放位置)自动生成Word文档,并可导出PDF。文章详细说明了5页Word模板的制作过程,包括页脚三栏设置和页码插入技巧,支持每户最多28个地块的情况。同时指出该软件生成的图片分辨率(300dpi)满足清晰度要求,并提及软件免费提供插件但收费提供后续服务。 阅读详情

相关推荐

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 792

P1903 [国家集训队] 数颜色 / 维护队列

P1903 [国家集训队] 数颜色 / 维护队列

汤键的博客 320

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 505

P1903 [国家集训队]数颜色 / 维护队列

给出一个大小为n的数组,有q次操作(查询[l,r]区间有多少个不同数或者修改某一个值)。 带修改的莫队。和普通莫队不同的是多了一维时间。因此在做区间修改之间,需要把时间序列修补一下。保存查询的时候需要保存当前修改序列的时间,在查询的时候需要走到当前时间。 另外在排序的时候,第二关键字r不再是奇偶block去排了,如果block相等,则按查询顺序,不相等则直接按r的大小。 block的大小从sqrt(n) 变成n^2/3。 int block_size; struct query{ ..

二次元的coding生活 157

文华财经公式编程:麦语言简介及基础语法

文华财经公式语言(麦语言)是一种专门用于金融领域的编程语言,它是由文华财经公司开发的。提供了丰富的金融计算函数和数据处理功能,可以用于金融市场的数据分析、模型建立和交易策略的开发。例1:A:CLOSE;// 定义变量A为收盘价(盘中k线没有走完的时候A为最新价)。例2:MA5:=MA(C,5);// 定义收盘价的5周期均线(C为CLOSE简写)。例3:A:=REF(C,1);// 取得前一根k线的收盘价。

超哥量化的博客 1万+

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 333

P1903 [国家集训队]数颜色 / 维护队列 -------莫队算法

题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。 第2行N个整数,分别...

weixin_43913594的博客 506

HTTPS接口测试翻车实录:为什么浏览器能访问而curl报证书错误?

本文深入分析了HTTPS接口测试中浏览器访问正常而curl报证书错误的典型问题。通过对比浏览器、Postman和curl的工具行为差异,结合Nginx日志与Wireshark抓包,揭示了问题根源在于网络架构中HTTPS请求被意外“降级”为HTTP传输,导致SSL握手失败。文章重点探讨了curl工具严格验证机制暴露的`Peer's Certificate issuer is not recognized`错误,并提供了网络配置修正方案与标准化测试流程。

u9v0w的博客 279

P1903 [国家集训队]数颜色 / 维护队列(带修莫队)

P1903 [国家集训队]数颜色 / 维护队列 板子题 带修莫队的的和普通莫队的区别就在于增加了修改操作 在一操作,求完之后在看修改的,把修改的部分加上去,加到该次操作之前 另外这里的块大小应该设为n23n^{\frac{2}{3}}n32​才能过,一般的根号过不了 #include <bits/stdc++.h> #define inf 0x7fffffff #define ll long long //#define int long long //#define double long d

lcl1234567890lcl的博客 158

37、半导体硅材料中的缺陷与吸杂技术解析

本文系统解析了半导体硅材料中的缺陷形成机制及其对电子器件性能的影响,重点探讨了生长和工艺诱导缺陷、表面与内部微缺陷的起源与特征。文章详细阐述了吸杂技术的原理、过程及在集成电路和太阳能电池制造中的应用,强调通过氧行为调控和热处理优化实现缺陷控制。同时介绍了吸杂效果的评估方法,并展望了未来新型吸杂技术的发展趋势,为提升半导体器件性能和制造良率提供理论支持和技术路径。

mongodb5scout的博客 164

NVIDIA - 人形机器人扼要

人形机器人是仿照人类外形设计的通用双足机器人,旨在与人类并肩工作,提高生产效率。它们能够学习和执行各种任务,如抓取物体、移动集装箱、装卸箱子等。

机器人控制与仿真应用 1290

洛谷P1903 [国家集训队]数颜色 / 维护队列 带修改莫队

https://www.luogu.com.cn/problem/P1903 离线修改的莫队可以多增加一维的时间,然后变成[l,r,t]->[l+-1,r+-1,t+-1] 先按左端点块排序,再按右端点块排序,再按时间大小排序。 块的大小需要是n^(2/3),可以吧总复杂度变成O(n^(5/3)),优于n^2 实际上在1e5的数据下洛谷最大的点只跑了846ms,还没加读入优化 #include<bits/stdc++.h> using namespace std; const

binarycopycode 211

【时时三省】tessy 进入调试模式 教程

山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。

时时三省的博客 771

洛谷 P1903 [国家集训队]数颜色 / 维护队列(带修改的莫队)

const int N=1e6+5; int n,m; int i,j,k; int a[N]; int block,vis[N],now,ans[N]; int tim,ask,mdf; struct Query { int l,r; int tim,id; int lbel,rbel; Query(int l=0,int r=0,int tim=0,int id=0):l(l),r(r),tim(tim),i...

C_Dreamy的博客 474

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

莫队算法学习笔记

看了AgOH大佬的视频https://www.bilibili.com/video/BV1C4411u7rK?from=search&seid=5854182600235483127 然后写了视频里的洛谷板子题 洛谷P2709 小B的询问 https://www.luogu.com.cn/problem/P2709 #include<iostream> #include<algorithm> #include<cmath> #include<cstring&

REXWind的博客 262

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

P1903 [国家集训队] 数颜色 / 维护队列 Solution

P1903 [国家集训队] 数颜色 / 维护队列 Solution

pystraf的博客 974

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【洛谷】P1903 [国家集训队]数颜色 / 维护队列 带修莫队

题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。 第2行N个整数,分别代表初始画笔排中第i支画笔的颜色。 第3行到第2+M行,每行分别代表墨墨会做的一件事情,格式见题干部分。 输出格

待到山花烂漫时 379

P1903 [国家集训队] 数颜色 / 维护队列(单点修改莫队)

与基础莫队的区别在于需要多维护一个变量---时间,用于标记修改操作的时间T,当每次询问区间[ L,R]时,我们就要把时间点调整到这个询问所处的时刻T。分块排序时,将T作为最不优先的判定。即在初级莫队算法的基础上,排序时多考虑一个时间T。每次区间查询时,将时间T调整到当前区间所处时间,再进行和初级莫队一样的查询操作。块,而不是基础莫队算法的 sqrt(n) 个块;利用分块算法将给定的 n 个数分成。

2302_79372568的博客 345

P1903-[国家集训队]数颜色/维护队列【带修莫队】

正题 题目链接:https://www.luogu.com.cn/problem/P1903 题目大意 要求支持两个操作 Q  L  R:Q\ \ L\ \ R:Q  L  R:询问L,RL,RL,R之间有多少个不同的数 R  P  Col:R\ \ P\ \ Col:R&n...

QuantAsk 514

洛谷 P1903 [国家集训队]数颜色 / 维护队列

题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。 第2行N个整数,分别代表初始画笔排中第i支画笔的颜色。 第3行到第2+M行,每行分别代表墨墨会做的一件事情,格式见题干部分。

qq_35975367的博客 407

P1903 【模板】带修莫队 / [国家集训队] 数颜色 / 维护队列

带修莫队 模板

2403_87530627的博客 447

【洛谷】P1903

数据结构 #莫队。

Antonio915的博客 727

题解 洛谷P1903/BZOJ2120【[国家集训队]数颜色 / 维护队列】

对于不会树套树、主席树的本蒟蒻,还是老老实实的用莫队做吧.... 其实这题跟普通莫队差不了多远,无非就是有了一个时间,当我们按正常流程排完序后,按照基本的莫队来,做莫队时每次循环对于这一次操作,我们在结构体中记录一下这次操作前有多少个改值操作,然后将当前的ans和每个点的颜色信息更新至当前队列(此队列不是莫队,是原队列)的状态再移动l,r两指针。 简单点说: 设当前询问为a,下一个询问为...

dingzongdu1901的博客 265

莫队模板

莫队模板

qq_42643660的博客 355

P1903 [国家集训队]数颜色 / 维护队列【带修莫队模板】

题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。 第2行N个整数,分别...

slass-mot-odet 478
上一篇: cf1181D Irrigation[思维+权值线段树求第k小]
下一篇: cf1238E. Keyboard Purchase [状压dp]
MekakuCityActors
博客等级 码龄9年 18粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值