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(带修莫队模板)相关推荐

  1. [国家集训队]数颜色 / 维护队列 (带修莫队模板题)

    题意: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. ...

  2. 莫队+带修莫队模板与总结

    以下总结参考了许多大佬们的博客,开篇先(大佬)% 莫队的入门题目主要为莫队和带修莫队在,这里就先在这里总结一下这两类题目的一些属性. 我认为莫队本质是一种比较优化的暴力查找法.在通过分块操作后把复杂度 ...

  3. 带修莫队 ---- P1903 [国家集训队]数颜色 / 维护队列 带修莫队模板

    题目链接 题目大意: 解题思路: 带修改的莫队 首先我们要知道,普通的莫队算法是不资瓷修改操作的, 不过后人对莫队算法加以改进 发明了资瓷修改的莫队算法 思路 在进行修改操作的时候,修改操作是会对答案 ...

  4. HDU - 6610 Game(带修莫队)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列 a,sum 为数列 a 的前缀异或和,再给出 m 次操作,每次操作分为两种类型: 1 l r:询问 sum 在区间 [ l , r ] 内有多 ...

  5. 带修莫队 的 小优化 (针对yxc版本)

    带修莫队模板题 请大佬出门右转 y总进阶课有一道类似的题,我把进阶课的代码交上去发现t了好几个点,我以为我代码常数大,我把y总的代码交上去之后,一直被卡一个点没过. #include <iost ...

  6. CF-940-F. Machine Learning【带修莫队】

    传送门 维护区间数字出现次数的mexmexmex 要求修改,支持离线 分析 支持离线,考虑莫队 区间数字出现次数的mexmexmex 经典带修莫队 直接维护数字出现的次数 找mexmexmex的时候, ...

  7. 牛客练习赛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 ...

  8. 莫队算法(普通莫队、带修莫队、树上莫队、不删除莫队)学习笔记【理解+套路/核心代码+例题及题解】

    一.理解 我的理解就是巧妙的暴力,利用双指针以及分块思想,巧妙的移动双指针,时间复杂度可以达到O(NlogN). 强推博客:写的又好又全.链接 二.套路 1.普通莫队 [1]核心代码 bool cmp ...

  9. 莫队和带修莫队 学习笔记

    哎,很纠结,我刚学这个东西,感觉好像本身自己理解得就不深刻,所以好像不知道该怎么写这个学习笔记了,估计是我思路最凌乱,语言最没逻辑的一篇学习笔记吧.(如果看到这儿觉得作者会坑就关掉吧..) 好,我来尝 ...

最新文章

  1. linux下的软件包安装(rpm   yum)
  2. 三维重建学习(5):简单地从数学原理层面理解双目立体视觉
  3. Html 教程 (1)简介
  4. hql可以使用distinct吗_香薰精油可以当香水使用吗
  5. springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
  6. http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?
  7. linux重置root密码_重置丢失的Linux root密码,错误密码的历史记录,Python,Ruby,课堂解决方案等
  8. 头条搜索回应百度:不交钱也会保护品牌词搜索
  9. AndroidStudio_在android中使用定时器_异步定时实现心跳保活功能---Android原生开发工作笔记231
  10. 重启nginx后丢失nginx.pid的解决方法(转)
  11. python字典功能默写_python之字典操作
  12. java水电费收费系统_基于SSM框架的JAVA水费电费管理系统
  13. 苹果手机没声音了显示耳机模式_别再认为音质不好是耳机的问题,也有可能是你手机没打开这个模式...
  14. @submit.prevent作用
  15. python进行回归分析与检验_R/python-回归分析
  16. html的ul和li元素
  17. 【数学基础知识】证明三角形的中线交于一点
  18. 解决win7提示不是正版的问题
  19. 如何搭建一个机器人控制系统
  20. java程序编译错误属于异常吗_“Cannot find symbol”编译错误是什么意思?

热门文章

  1. 小米机器人磁条_小米扫地机1S开箱和简单评测
  2. springBoot解决cros(跨域)问题
  3. 16g电脑内存有什么好处_电脑32G内存有必要吗?8G、16G、32G内存条玩游戏、生产力实测对比...
  4. 视频会议系统租赁还是自建好
  5. Marquee文字移动
  6. 黑马程序员之手机卫士第四天
  7. Android安全输入设计与思考
  8. hotspot源码下载
  9. bp神经网络图像特征提取,BP神经网络图像识别
  10. 将自己的姓氏用星号c语言,姓名显示最后一字其他替换成星号