当前位置: 首页 > web >正文

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

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

 

与基础莫队的区别在于需要多维护一个变量---时间,用于标记修改操作的时间T,当每次询问区间[ L,R]时,我们就要把时间点调整到这个询问所处的时刻T。

利用分块算法将给定的 n 个数分成 n^{\frac{2}{3}} 块,而不是基础莫队算法的 sqrt(n) 个块;

分块排序时,将T作为最不优先的判定。即在初级莫队算法的基础上,排序时多考虑一个时间T。

每次区间查询时,将时间T调整到当前区间所处时间,再进行和初级莫队一样的查询操作。

Code:

const int N=1e6+5,mod=998244353;int pos[N],cnt[N],n,q,res,ans[N];
int a[N];struct node{int l,r,id,tt;
}tr[N];struct R{int p,v;
}R[N];void add(int x)
{if(!cnt[a[x]]) res++;cnt[a[x]]++;
}void sub(int x)
{if(cnt[a[x]]==1) res--;cnt[a[x]]--;
}void modify(int t,int i)
{int x=R[t].p;if(tr[i].l<=R[t].p&&tr[i].r>=R[t].p){int temp=R[t].v;int temp1=a[x];a[x]=temp;add(x);a[x]=temp1;sub(x);} swap(a[x],R[t].v);
}
void solve()
{cin>>n>>q;int sz=pow(n,2.0/3.0);for(int i=1;i<=n;i++){cin>>a[i];pos[i]=i/sz;}int id=0,tt=0;for(int i=1;i<=q;i++){char c;cin>>c;int l,r;cin>>l>>r;if(c=='Q') tr[++id]={l,r,id,tt};else R[++tt]={l,r};}sort(tr+1,tr+1+id,[](node x,node y){if(pos[x.l]!=pos[y.l]) return pos[x.l]<pos[y.l];if(pos[x.r]!=pos[y.r]) return pos[x.r]<pos[y.r];return x.tt<y.tt;});int l=1,r=0;tt=0;for(int i=1;i<=id;i++){while(tr[i].l<l) add(--l);while(tr[i].r>r) add(++r);while(tr[i].r<r) sub(r--);while(tr[i].l>l) sub(l++);while(tt<tr[i].tt) modify(++tt,i);while(tt>tr[i].tt) modify(tt--,i);ans[tr[i].id]=res;}for(int i=1;i<=id;i++) cout<<ans[i]<<endl;
}

http://www.xdnf.cn/news/9453.html

相关文章:

  • 借教室--二分+查分
  • vue2 一分钟不动系统 系统将进行锁定
  • Android系统 TinyAlsa命令
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 特殊的双模系统 复杂结构 非并行串行结构的两种计算方法
  • 4.GIS迁移步骤+注意事项+部署常见问题
  • Keepalived 配置 VIP 的核心步骤
  • 西门子-队列
  • SaaS与私有部署:企业如何选择同城O2O外卖跑腿APP开发方案?
  • 第五章 文件内容显示
  • java每日精进 5.27【异步实现】
  • C3P0连接池的使用方法和源码分析
  • Linux系统 - 系统编程概念
  • 【Redis】常用的数据类型 + 单线程模型
  • 答疑:鲜羊奶如何助力亲子关系平衡?
  • 全志V853 mpp程序开发
  • Python训练营---Day38
  • Kubernetes 中的CRD(Custom Resource Definition)与Operator详解
  • Web前端入门:JavaScript 运算符 == 和 === 有什么区别?
  • 枪弹库专用门
  • Vue3 封装el-table组件
  • [学习]C语言指针函数与函数指针详解(代码示例)
  • 2025年6月亲测可用 | 剪映免SVIP版本 | 支持数字人
  • esp32 sip voip 软电话
  • 创建型模式之Abstract Factory(抽象工厂)
  • o1 mini vs o3 mini vs o3 mini high:2025全面对比测评(性能/价格/场景)
  • js获取浏览器中文参数
  • 从预测到验证一键get靶基因结合的转录因子
  • 余弦退火:助力模型训练的优化算法
  • 如何通过TDE透明加密保护智慧档案管理系统中的数据
  • 秒杀系统—1.架构设计和方案简介