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

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

3339: Rmq Problem

Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 1075  Solved: 549
[][][]

Description

Input

Output

Sample Input

7 5
0 2 1 0 1 3 2
1 3
2 3
1 4
3 6
2 7

Sample Output

3
0
3
2
4

HINT

 

 

Source

[ ][ ][ ]

 

和 一模一样,代码不变,AC依旧。

 

1 #include 
2 3 const int mxn = 200005; 4 5 int n, m, num[mxn], nxt[mxn], lst[mxn], mex[mxn], vis[mxn], ans[mxn]; 6 7 struct query { 8 int l, r, t; 9 }q[mxn];10 11 inline bool cmp(const query &a, const query &b)12 {13 return a.l < b.l;14 }15 16 signed main(void)17 {18 scanf("%d%d", &n, &m);19 20 for (int i = 1; i <= n; ++i)21 {22 scanf("%d", num + i);23 if (num[i] > n)24 num[i] = n;25 }26 27 for (int i = 0; i <= n; ++i)28 lst[i] = n + 1;29 30 for (int i = n; i >= 1; --i)31 nxt[i] = lst[num[i]], lst[num[i]] = i;32 33 for (int i = 1; i <= n; ++i)34 {35 mex[i] = mex[i - 1];36 vis[num[i]] = true;37 while (vis[mex[i]])38 ++mex[i];39 }40 41 for (int i = 1; i <= m; ++i)42 scanf("%d%d", &q[i].l, &q[i].r), q[i].t = i;43 44 std::sort(q + 1, q + m + 1, cmp);45 46 int left = 1;47 48 for (int i = 1; i <= m; ++i)49 {50 while (left < q[i].l)51 {52 int t = nxt[left];53 int p = num[left];54 for (int j = t - 1; j > left; --j)55 {56 if (mex[j] <= p)break;57 else mex[j] = p;58 }59 ++left;60 }61 62 ans[q[i].t] = mex[q[i].r];63 }64 65 for (int i = 1; i <= m; ++i)66 printf("%d\n", ans[i]);67 }

 

@Author: YouSiki

 

转载于:https://www.cnblogs.com/yousiki/p/6273424.html

你可能感兴趣的文章
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
20181227 新的目标
查看>>
androidtab
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>
每日一小练——数值自乘递归解
查看>>
qq登陆错误提示
查看>>
bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维 + 二进制
查看>>
没写完,没调完,咕咕咕的代码
查看>>