CF 940F - Machine Learning ( 带 修 )
题目: 链接:https://codeforces.com/problemset/problem/940/F
题意:给你n个数,a[i]有q个操作,操作有两种:操作1. 1 x y 表示询问, mex{ c[ 1 ],c[ x + 1 ],...c[ 1e9 ] } 的值, 其中 c[i] 表示 a[ i ] 在 区间 [ x , y ] 出现的次数, (mex{ } 的意思呢,是从1开始数,第一个不出现在集合 { } 里的数, 比如 mex{ 1, 2, 4 } = = 3 因为此题是从1开始数 ) 操作2. 2 p x 将 a[ p ] 重新赋值 为 x 对每个操作1 输出答案
思路: 将 a[ i ] 离散化 因为 数据有点大,然后找答案 直接 暴力 找 其他的基本上就是 带修莫队 的 模板了
- #include<bits/stdc++.h>
- #define LL long long
- #define ULL unsigned long long
- #define rep(i,j,k) for(int i=j;i<=k;i++)
- #define dep(i,j,k) for(int i=k;i>=j;i--)
- #define INF 0x3f3f3f3f
- #define mem(i,j) memset(i,0,sizeof(i))
- #define make(i,j) make_pair(i,j)
- using namespace std;
- const int N=2e5+;
- int a[N],pos[N],num[N],cnt[N],now[N],p,ans[N],l=,r=; /// num就是a[i]在l,r出现的次数,然后cnt就是那个 mex { } 的集合
- struct noq {
- int l,r,id,t;
- }q[N];
- struct noc {
- int x,old,ne;
- }c[N];
- map<int,int>vis; ///离散化 a[i] 需要
- bool cmp(noq a,noq b) {
- if(pos[a.l]==pos[b.l]) {
- if(pos[a.r]==pos[b.r]) return a.t<b.t;
- return pos[a.r]<pos[b.r];
- }
- return pos[a.l]<pos[b.l];
- }
- int get(int x) { /// 得到 离散化后的a[i]
- if(vis[x]==) vis[x]=++p;
- return vis[x];
- }
- void add(int x,int d) {
- cnt[num[x]]--;
- num[x]+=d;
- cnt[num[x]]++;
- }
- void go(int x,int ne) {
- if(l<=x && x<=r) {
- add(a[x],-); add(ne,);
- }
- a[x]=ne;
- }
- int cal() {///找答案
- for(int i=;;i++) if(cnt[i]==) return i;
- }
- int main() {
- int n,m; int head=,tail=;
- scanf("%d %d",&n,&m); int M=(int)pow(n,0.666666);
- rep(i,,n) {
- scanf("%d",&a[i]);
- now[i]=a[i]=get(a[i]);
- pos[i]=(i-)/M;
- }
- rep(i,,m) {
- int ch; int x,y;
- scanf("%d %d %d",&ch,&x,&y);
- if(ch==) q[++head]=(noq){x,y,head,tail};
- else {
- y=get(y); ///记得y也要离散化,因为 now[x] 是 离散化后的 a[i]
- c[++tail]=(noc){x,now[x],y};
- now[x]=y;
- }
- }
- sort(q+,q++head,cmp); int t=;
- rep(i,,head) {
- while(t<q[i].t) go(c[t+].x,c[t+].ne),++t;
- while(t>q[i].t) go(c[t].x,c[t].old),--t;
- while(l<q[i].l) add(a[l++],-);
- while(l>q[i].l) add(a[--l],);
- while(r<q[i].r) add(a[++r],);
- while(r>q[i].r) add(a[r--],-);
- ans[q[i].id]=cal();
- }
- rep(i,,head) printf("%d\n",ans[i]);
- return ;
- }
CF 940F - Machine Learning ( 带 修 )的更多相关文章
- F. Machine Learning 带修端点莫队
F. Machine Learning time limit per test 4 seconds memory limit per test 512 megabytes input standard ...
- Codeforces 940F Machine Learning 带修改莫队
题目链接 题意 给定一个长度为\(n\)的数组\(a\),\(q\)个操作,操作分两种: 对于区间\([l,r]\),询问\(Mex\{c_0,c_1,c_2,⋯,c_{10^9}\}\),其中\(c ...
- Codeforces 940F Machine Learning (带修改莫队)
题目链接 Codeforces Round #466 (Div. 2) Problem F 题意 给定一列数和若干个询问,每一次询问要求集合$\left\{c_{0}, c_{1}, c_{2}, ...
- CF940F Machine Learning 带修改莫队
题意:支持两种操作:$1.$ 查询 $[l,r]$ 每个数字出现次数的 $mex$,$2.$ 单点修改某一位置的值. 这里复习一下带修改莫队. 普通的莫队中,以左端点所在块编号为第一关键字,右端点大小 ...
- CF940F Machine Learning(带修莫队)
首先显然应该把数组离散化,然后发现是个带修莫队裸题,但是求mex比较讨厌,怎么办?其实可以这样求:记录每个数出现的次数,以及出现次数的出现次数.至于求mex,直接暴力扫最小的出现次数的出现次数为0的正 ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
随机推荐
- vim字符匹配
按 : 这个符号进入命令模式后,可以对文本信息进行替换.删除等操作.
- python中append、extend、和insert的区别
a_list = [x for x in range(1, 11)] print(a_list) a_list.append('sdadfewf') # 将整个字符串放到列表的最后 print(a_l ...
- Yii2 基于header 实现接口版本控制
Yii2 官方给出的方案是基于url的版本控制,但是我们的versoin放在header里面,需要通过header来进行版本控制,实现如下: 首先在基类中实现actions,actions是针对con ...
- JVM 介绍
JVM 介绍: JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的 ...
- Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化
本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/BWpy3F-nEKXCdVXmY3GYZg 当然还有更多R语言,生物信息学相关知识...
- 数据库及MYSQL基础(3)-JDBC
教学视频链接:https://edu.aliyun.com/course/1694?spm=5176.11400004.0.0.29254768sg2H5P 程序文件链接:https://pan.ba ...
- Django入门第一步:构建一个简单的Django项目
Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...
- K2 工作流_【解决方案】车企CAL应用解决方案,攻克新车质检环节管理难题_全球领先的工作流引擎
截止去年,中国已连续第九年成为全球最大汽车市场,与此同时关于乘用车新车售前检查(PDI)相关的诉讼纠纷案件也逐年呈上升趋势(PDI全称为Pre-Delivery Inspection,是经销商对乘 ...
- Axure工作区间
Axure的工作环境可进行可视化拖拉操作,可轻松快速的创建带有注释的线框图.无需编程就可以在线框图中定义简单链接和高级交互.Axure可一体化生成线框图.HTML交互原型.规格说明Word文档.以下是 ...
- MySQL数字类型int与tinyint、float与decimal如何选择
最近在准备给开发做一个mysql数据库开发规范方面培训,一步一步来,结合在生产环境发现的数据库方面的问题,从几个常用的数据类型说起. int.tinyint与bigint 它们都是(精确)整型数据类型 ...