博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ - 3339: Rmq BZOJ - 3585: mex
阅读量:5749 次
发布时间:2019-06-18

本文共 1667 字,大约阅读时间需要 5 分钟。

 

题解:分块维护权值,用莫队转移。

分块修改操作$O(1)$,查询$O(\sqrt{A_{max}})$。莫队转移$O(m\sqrt n)$。总共是$O(m\sqrt n)$

一份代码解决两道题。额外的经验!

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 inline char nc() { 7 static char b[1<<14],*s=b,*t=b; 8 return s==t&&(t=(s=b)+fread(b,1,1<<14,stdin),s==t)?-1:*s++; 9 }10 inline void read(int &x) {11 char b = nc(); x = 0;12 for (; !isdigit(b); b = nc());13 for (; isdigit(b); b = nc()) x = x * 10 + b - '0';14 }15 int n, m, a[200010], ans[200010];16 int S, bl[200010], tans, cnt[200010];17 struct Q {18 int l, r, id, t;19 inline void init(int i) {20 read(l); read(r); id = i; t = l / S;21 }22 inline bool operator<(const Q &q) const {23 return t < q.t || (t == q.t && r < q.r);24 }25 } q[200010];26 const int INF = 0x3f3f3f3f;27 void edt(int x, int k) {28 if (x > n) return; cnt[x] += k;29 if (x < tans && !cnt[x]) tans = x;30 while (cnt[tans]) ++tans;31 }32 int main() {33 read(n); read(m); S = sqrt(n);34 for (int i = 1; i <= n; ++i) read(a[i]);35 for (int i = 0; i <= n; ++i) bl[i] = i / S + 1;36 for (int i = 0; i < m; ++i) q[i].init(i);37 sort(q, q + m); edt(a[1], 1);38 for (int l = 1, r = 1, i = 0; i < m; ++i) {39 while (l < q[i].l) edt(a[l++], -1);40 while (l > q[i].l) edt(a[--l], 1);41 while (r < q[i].r) edt(a[++r], 1);42 while (r > q[i].r) edt(a[r--], -1);43 ans[q[i].id] = tans;44 }45 for (int i = 0; i < m; ++i) printf("%d\n", ans[i]);46 return 0;47 }

 

转载于:https://www.cnblogs.com/p0ny/p/8127849.html

你可能感兴趣的文章
微软超融合私有云测试29-SCDPM2016部署之创建保护组备份(备份虚拟机)
查看>>
LBS“他爹”GIS
查看>>
同质化倾向的互联网金融 玖富带来了温度与色彩
查看>>
SCCM的证书配置PKI
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
Exchange server 2010系列教程之一 安装Exchange 2010准备条件
查看>>
POI 生成 xls 文件使用总结(快速入门)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>
debian 下安装megacli
查看>>
我写的第一个shell脚本(2009-06-08)
查看>>
ubutun 中 Eclipse中 快捷键 Alt + / 不能使用的问题
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
wnmp-3.1.0安装cakephp启动失败处理
查看>>
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
Java集合(二) Map 架构
查看>>