CF940F Machine Learning(带修莫队模板)
CF940F Machine Learning
纯模板题
有几个需要注意的地方
1.维度是all+1维,其中查询一维,修改一维,共二维,所以块的大小 s i z e = n 2 / 3 size=n^{2/3} size=n2/3
2.修改处每次修改一次(哪怕没在块内,也要swap)
3.离散化
4.bitset快速查询
#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
#define re register int
#define void inline void
#define eps 1e-5
//#define mod 1e9+7
//#define ls(p) p<<1
//#define rs(p) p<<1|1
//#define pi acos(-1.0)
#define pb push_back
#define P pair < int , int >
#define mk make_pair
#define fi first
#define se second
//#define unordered_map map
//#define __int128 long long
using namespace std;
const int mod=998244353;
const int N=2e6+5;
int n,m,p,k,k1,len,la,t;
int ans[N],cnt[N],cnt1[N],a[N];
int b[N],all;
struct node
{int l,r,id,tim;
}q[N];
struct Cha
{int pos,val;
}c[N];
bitset < N > num;
bool cmp(node i,node j)
{if(i.l/len!=j.l/len) return i.l/len<j.l/len;if(i.r/len!=j.r/len) return i.r/len<j.r/len;return i.tim<j.tim;
}
void add(int i)
{cnt1[cnt[a[i]]]--;if(!cnt1[cnt[a[i]]]) num[cnt[a[i]]]=1;cnt[a[i]]++;if(!cnt1[cnt[a[i]]]) num[cnt[a[i]]]=0;cnt1[cnt[a[i]]]++;
}
void del(int i)
{cnt1[cnt[a[i]]]--;if(!cnt1[cnt[a[i]]]) num[cnt[a[i]]]=1;cnt[a[i]]--;if(!cnt1[cnt[a[i]]]) num[cnt[a[i]]]=0;cnt1[cnt[a[i]]]++;
}
void work(int l,int r,int t)
{if(l<=c[t].pos&&r>=c[t].pos){del(c[t].pos);swap(a[c[t].pos],c[t].val);add(c[t].pos);}else swap(a[c[t].pos],c[t].val);
}
void solve()
{int l=1,r=0;cin>>n>>m;len=pow(n,2.0/3.0);for(re i=1;i<=n;i++){scanf("%d",&a[i]);b[++all]=a[i];}for(re i=1;i<=m;i++){int op,l,r;scanf("%d%d%d",&op,&l,&r);if(op==1) q[++k]=(node){l,r,k,la};else{k1++;la=k1;b[++all]=r;c[k1]=(Cha){l,r};}}sort(b+1,b+all+1);all=unique(b+1,b+all+1)-(b+1);for(re i=1;i<=n;i++) a[i]=lower_bound(b+1,b+all+1,a[i])-b;for(re i=1;i<=k1;i++) c[i].val=lower_bound(b+1,b+all+1,c[i].val)-b;sort(q+1,q+k+1,cmp);cnt1[0]=1e9;num.set();num[0]=0;for(re i=1;i<=k;i++){while(l>q[i].l) add(--l);while(r<q[i].r) add(++r);while(l<q[i].l) del(l++);while(r>q[i].r) del(r--);while(t<q[i].tim) ++t,work(l,r,t);while(t>q[i].tim) work(l,r,t),t--;ans[q[i].id]=num._Find_first();}for(re i=1;i<=k;i++) printf("%d\n",ans[i]);
}
signed main()
{// fflush(stdout);
// srand(102321547);
// freopen("Ain.txt", "r", stdin)
// freopen("Aout.txt", "w", stdout);
// freopen("9.out", "w", stdout);int T=1;
// cin>>T;for(int index=1;index<=T;index++){// printf("Case #%d: ",index);solve();
// puts("");}return 0;
}
/*1
6
4 5 5 5 7 6
93 78 61 92 56 65*/
CF940F Machine Learning(带修莫队模板)相关推荐
- [国家集训队]数颜色 / 维护队列 (带修莫队模板题)
题意: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. ...
- 莫队+带修莫队模板与总结
以下总结参考了许多大佬们的博客,开篇先(大佬)% 莫队的入门题目主要为莫队和带修莫队在,这里就先在这里总结一下这两类题目的一些属性. 我认为莫队本质是一种比较优化的暴力查找法.在通过分块操作后把复杂度 ...
- 带修莫队 ---- P1903 [国家集训队]数颜色 / 维护队列 带修莫队模板
题目链接 题目大意: 解题思路: 带修改的莫队 首先我们要知道,普通的莫队算法是不资瓷修改操作的, 不过后人对莫队算法加以改进 发明了资瓷修改的莫队算法 思路 在进行修改操作的时候,修改操作是会对答案 ...
- HDU - 6610 Game(带修莫队)
题目链接:点击查看 题目大意:给出一个长度为 n 的序列 a,sum 为数列 a 的前缀异或和,再给出 m 次操作,每次操作分为两种类型: 1 l r:询问 sum 在区间 [ l , r ] 内有多 ...
- 带修莫队 的 小优化 (针对yxc版本)
带修莫队模板题 请大佬出门右转 y总进阶课有一道类似的题,我把进阶课的代码交上去发现t了好几个点,我以为我代码常数大,我把y总的代码交上去之后,一直被卡一个点没过. #include <iost ...
- CF-940-F. Machine Learning【带修莫队】
传送门 维护区间数字出现次数的mexmexmex 要求修改,支持离线 分析 支持离线,考虑莫队 区间数字出现次数的mexmexmex 经典带修莫队 直接维护数字出现的次数 找mexmexmex的时候, ...
- 牛客练习赛85 数学家的迷题 (带修莫队/线段树)
题意: 1:将a[id]a[id]a[id]的值改为xxx. 2:令t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a ...
- 莫队算法(普通莫队、带修莫队、树上莫队、不删除莫队)学习笔记【理解+套路/核心代码+例题及题解】
一.理解 我的理解就是巧妙的暴力,利用双指针以及分块思想,巧妙的移动双指针,时间复杂度可以达到O(NlogN). 强推博客:写的又好又全.链接 二.套路 1.普通莫队 [1]核心代码 bool cmp ...
- 莫队和带修莫队 学习笔记
哎,很纠结,我刚学这个东西,感觉好像本身自己理解得就不深刻,所以好像不知道该怎么写这个学习笔记了,估计是我思路最凌乱,语言最没逻辑的一篇学习笔记吧.(如果看到这儿觉得作者会坑就关掉吧..) 好,我来尝 ...
最新文章
- linux下的软件包安装(rpm yum)
- 三维重建学习(5):简单地从数学原理层面理解双目立体视觉
- Html 教程 (1)简介
- hql可以使用distinct吗_香薰精油可以当香水使用吗
- springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
- http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?
- linux重置root密码_重置丢失的Linux root密码,错误密码的历史记录,Python,Ruby,课堂解决方案等
- 头条搜索回应百度:不交钱也会保护品牌词搜索
- AndroidStudio_在android中使用定时器_异步定时实现心跳保活功能---Android原生开发工作笔记231
- 重启nginx后丢失nginx.pid的解决方法(转)
- python字典功能默写_python之字典操作
- java水电费收费系统_基于SSM框架的JAVA水费电费管理系统
- 苹果手机没声音了显示耳机模式_别再认为音质不好是耳机的问题,也有可能是你手机没打开这个模式...
- @submit.prevent作用
- python进行回归分析与检验_R/python-回归分析
- html的ul和li元素
- 【数学基础知识】证明三角形的中线交于一点
- 解决win7提示不是正版的问题
- 如何搭建一个机器人控制系统
- java程序编译错误属于异常吗_“Cannot find symbol”编译错误是什么意思?