Codeforces Round #466 (Div. 2) F. Machine Learning 莫队+分块 带修莫队的模板题
时间:2020-05-21
本文章向大家介绍 Codeforces Round #466 (Div. 2) F. Machine Learning 莫队+分块 带修莫队的模板题,主要包括 Codeforces Round #466 (Div. 2) F. Machine Learning 莫队+分块 带修莫队的模板题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <bits/stdc++.h> #define N 300005 #define ll long long using namespace std; int n,m,tot,opcnt,qcnt,B,now; int a[N],A[N],output[N],cnt[N],mex[N]; struct query { int l,r,id,t; bool operator<(query b) const { return l/B==b.l/B?(r/B==b.r/B?t<b.t:r<b.r):l<b.l; } } q[N]; struct change { int p,x; } c[N]; void add(int num) { --mex[cnt[num]]; ++mex[++cnt[num]]; } void del(int num) { --mex[cnt[num]]; ++mex[--cnt[num]]; } void update(int id,int t) { if(c[t].p>=q[id].l&&c[t].p<=q[id].r) { del(a[c[t].p]); add(c[t].x); } swap(c[t].x, a[c[t].p]); } int getans() { int i; for(i=1; mex[i]>0; ++i); return i; } int main() { int l=2,r=1; scanf("%d%d",&n,&m); B=pow(n,0.6666); for(int i=1; i<=n; ++i) { scanf("%d",&a[i]); A[++tot]=a[i]; } for(int i=1; i<=m; ++i) { int op,a,b; scanf("%d%d%d",&op,&a,&b); if(op==1) { ++qcnt; q[qcnt]={a,b}; q[qcnt].id=qcnt; q[qcnt].t=opcnt; } else { ++opcnt; c[opcnt]={a,b}; A[++tot]=b; } } sort(A+1,A+1+tot); for(int i=1; i<=n; ++i) a[i]=lower_bound(A+1,A+1+tot,a[i])-A; for(int i=1; i<=opcnt; ++i) c[i].x=lower_bound(A+1,A+1+tot,c[i].x)-A; sort(q+1,q+1+qcnt); for(int i=1; i<=qcnt; ++i) { while(l>q[i].l) add(a[--l]); while(r<q[i].r) add(a[++r]); while(l<q[i].l) del(a[l++]); while(r>q[i].r) del(a[r--]); while(now<q[i].t) update(i, ++now); while(now>q[i].t) update(i, now--); output[q[i].id]=getans(); } for(int i=1; i<=qcnt; ++i) printf("%d\n",output[i]); return 0; }
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12929991.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Salesforce LWC学习(二十五) Jest Test
- 自建npm包-搭建,打包,调试,发布
- 你对排序算法了解多少
- 【大数据架构】大数据数据仓库与数据中台架构
- JavaScript中的内置对象、面向对象与原型
- Java.lang.Illegalaccessexception 或 java.lang.NoSuchMethodError
- Python 爬虫进阶必备 | 关于某电商 token 参数加密逻辑分析
- Python 爬虫进阶必备 | 某直播数据分析平台加密参数 sign 分析
- Python 爬虫进阶必备 | 某指数分析平台解密逻辑分析
- SpringBoot开发秘籍 - 事件异步处理
- Hive on Spark参数调优姿势小结
- 想跨端开发小程序?这个最流行的跨端框架一定要学习!
- 1分钟搞定 Nginx 版本的平滑升级与回滚
- 详解:如何在uni-app中选择一个合适的UI组件库
- Python处理HTTP请求之requests指北