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. 实用C#编程规范(转载)
  2. Linux文件与目录的rwx权限
  3. evc4工程移植vs.net2005所碰到的问题积累
  4. Spring在web中的使用
  5. 用python画常密度轮廓线,如何使用Matplotlib在极坐标中绘制具有等高线密度线的散点图?...
  6. SpringMVC连接多数据源配置
  7. (诡异事件)iframe标签后面的alert不执行
  8. linux编译c 优化,Linux编译选项
  9. 解决idea文件名称大小写导致GIT无法提交问题
  10. 大学里学的单片机和网课一对一学单片机有什么区别
  11. Codeforces 160
  12. Atitit 数据出入管理法v3 目录 1.1. 边界检查:web边界和sql边界 1 2. 检查条目 1 2.1. 数据种类检查 整数 小数 字符串(带长度,字符白名单校验) 1 2.2. 字符黑
  13. 网络爬虫+数据可视化
  14. allshare cast安卓版下载_PanDownload 安卓手机版,解决百度网盘下载速度慢
  15. 二、电容屏原理(1)
  16. 用户界面组件-菜单(Menus)
  17. Hadoop Failover
  18. HDU 6438-Buy and Resell
  19. DSSD : Deconvolutional Single Shot Detector
  20. visio2007或office 2007安装失败提示一个或多个受保护的windows文件导致office 2007安装失败

热门文章

  1. Windows上实现nginx的多负载,实现高可用,NLB 替代keepalived
  2. Python Numpy库教程(超详细)
  3. Kafka与zookeeper集群配置安装(Zk集群至少三台)
  4. 钉钉之最终幻想:No App
  5. 谈谈C#文件监控对象FileSystemWatcher使用感受
  6. ipmitool 设置网关_IPMITOOL常用操作指令
  7. 「前端那些事儿」② 极限性能优化
  8. Unity提示Error Asset Refreshing
  9. 关于权限表的基本设计
  10. 〖编程初学者的自我修养 - 精炼面试篇①〗- 面试之前需要做的「长期准备工作」