洛谷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;
}

微机原理课程设计-模拟十字路口交通信号灯 一、设计任务描述 1.1设计目的 通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。 1.2 设计要求 控制LED灯,按照十字路口红绿灯的原理亮灭显示: (1) 东西方向车辆放行x秒... 阅读详情

相关推荐

【大模型】大模型知识蒸馏 综述解读(Knowledge Distillation of Large Language Models)

知识蒸馏的(论文)方法总结。归纳了通过数据(如指令、对话、多模态)和训练方法(SFT、RL、数据增强),将复杂技能(如对齐、工具使用、多模态)蒸馏到开源模型的核心框架,附典型模型示例(如Alpaca、LLaVA)。

songxia928_928的博客 4336

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

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

汤键的博客 320

零基础搭建本地AI绘画环境:Stable Diffusion 3.5保姆级安装教程(含中文优化方案)

本文提供零基础搭建本地AI绘画环境的详细教程,重点介绍Stable Diffusion 3.5的安装与中文优化方案。从硬件配置检查到软件依赖安装,再到核心组件配置与中文语义增强,教程涵盖全流程操作指南,帮助用户快速掌握AI文生图模型的本地部署技巧,提升创作效率。

weixin_30752699的博客 312

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

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

二次元的coding生活 157

从零构建Elasticsearch MCP代理:自然语言查询背后的技术揭秘

本文深入解析如何从零构建Elasticsearch MCP代理,实现自然语言查询的技术架构与实战应用。通过MCP协议与Elasticsearch的结合,系统能够将自然语言转换为精确的DSL查询,提升非技术用户的数据查询效率。文章详细介绍了核心架构、DSL生成引擎、端到端系统搭建及生产环境最佳实践,为开发者提供全面的技术指南。

lll78的博客 877

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 405

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

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

weixin_43913594的博客 506

SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇) 第一篇:需求梳理与架构设计:从零搭建SAP主数据校验能力底座

摘要: 本系列博客介绍SAP主数据校验工具的开发和设计,旨在解决物料、供应商、客户等主数据录入不规范、关联缺失和合规性问题。第一篇聚焦需求梳理与架构设计,提出分层技术架构(展示层、业务逻辑层、数据访问层),支持实时校验和批量校验两种模式,并详细说明规则引擎设计、SAP系统对接方案及权限管控逻辑。后续篇章将深入规则引擎实现、接口对接、结果可视化和性能优化,帮助构建集中式、可配置的主数据校验能力,提升SAP数据质量。

baidu_35680696的博客 330

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

第9.3章 从CMake基础到自动驾驶实战:构建跨平台C/C++项目的全能指南

《CMake构建实战:项目开发卷》精要指南 本文系统梳理了许宏旭《CMake构建实战》核心内容,涵盖C++构建全流程: 基础构建:详解MSVC/GCC编译器使用、Makefile编写及静态/动态库构建方法 CMake核心:解析语法结构、变量控制、文件操作等关键命令,阐述项目全生命周期管理 实战应用:通过快速排序、手写数字识别项目演示现代CMake实践,特别针对自动驾驶领域给出多传感器融合、SLAM等场景的CMake配置方案 特色价值:本书填补了官方文档实例不足的空白,提供300+代码示例,是掌握工业级C++

行知SLAM 1343

YOLO11数据增强中的色彩空间变换:HSV、YUV等增强技术的原理、实现与参数调优全解析

摘要 本文介绍了色彩空间的基本概念及其在数据增强中的应用,重点分析了HSV色彩空间的原理与特性。色彩空间作为颜色表示的数学模型,在计算机视觉中具有重要作用,RGB、HSV、YUV等常用色彩空间各有特点。数据增强中的色彩变换能提升模型鲁棒性、缓解数据不平衡并防止过拟合。HSV色彩空间将颜色分为色调(H)、饱和度(S)和明度(V)三个独立分量,更符合人类视觉感知,便于针对性调整图像属性。文章详细阐述了HSV与RGB的转换公式,为YOLO11等目标检测框架的数据增强提供了理论基础。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 288

洛谷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

【Yolo12改进策略】MRFA 小核协同,构建巨大的感受野,同时保持高斯型分布|即插即用|ICCV2025

本文将介绍如何将 UniConvNet 论文中的核心模块——感受野聚合器集成到 Yolo12中,通过一种新颖的“小核协同”范式,在不显著增加计算开销的前提下,显著提升模型的感受野质量和检测精度。在目标检测中,模型要识别一个物体,不仅需要看到物体的局部特征,更需要理解其周围的上下文信息。传统卷积网络通过堆叠小卷积核(如 3x3)来扩大“感受野”,但这个过程缓慢且效率低下。而近期流行的大核卷积,虽然感受野大,但会破坏“距离越近、影响越大”的自然分布,且带来巨大的计算负担。MRFA 找到了一条“中间道路”:它通过

m0_47867638的博客 930

洛谷 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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

莫队算法学习笔记

看了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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

pystraf的博客 974

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【洛谷】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、付费专栏及课程。

余额充值