3339: Rmq Problem

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

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

[Submit][Status][Discuss]

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

  1. #include <bits/stdc++.h>
  2.  
  3. const int mxn = ;
  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 = ; i <= n; ++i)
  21. {
  22. scanf("%d", num + i);
  23. if (num[i] > n)
  24. num[i] = n;
  25. }
  26.  
  27. for (int i = ; i <= n; ++i)
  28. lst[i] = n + ;
  29.  
  30. for (int i = n; i >= ; --i)
  31. nxt[i] = lst[num[i]], lst[num[i]] = i;
  32.  
  33. for (int i = ; i <= n; ++i)
  34. {
  35. mex[i] = mex[i - ];
  36. vis[num[i]] = true;
  37. while (vis[mex[i]])
  38. ++mex[i];
  39. }
  40.  
  41. for (int i = ; i <= m; ++i)
  42. scanf("%d%d", &q[i].l, &q[i].r), q[i].t = i;
  43.  
  44. std::sort(q + , q + m + , cmp);
  45.  
  46. int left = ;
  47.  
  48. for (int i = ; 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 - ; 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 = ; i <= m; ++i)
  66. printf("%d\n", ans[i]);
  67. }

@Author: YouSiki

BZOJ 3339: Rmq Problem的更多相关文章

  1. Bzoj 3339: Rmq Problem && Bzoj 3585: mex 莫队,树状数组,二分

    3339: Rmq Problem Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 833  Solved: 397[Submit][Status][D ...

  2. BZOJ 3339: Rmq Problem 莫队算法

    3339: Rmq Problem 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3339 Description n个数,m次询问l,r ...

  3. bzoj 3339 Rmq Problem / mex

    题目 我的树状数组怎么那么慢啊 就是一道水题,我们考虑一下对于一个区间\([l,r]\)什么样的数能被计算 显然需要对于一个\(j\),需要满足\(j<l\)且\(nxt_{j}>r\), ...

  4. BZOJ 3339 Rmq Problem(离线+线段树+mex函数)

    题意: q次询问,问[l,r]子区间的mex值 思路: 对子区间[l,r],当l固定的时候,[l,r]的mex值对r单调不减 对询问按照l离线,对当前的l,都有维护一个线段树,每个叶节点保存[l,r] ...

  5. 【BZOJ】3339: Rmq Problem & 3585: mex(线段树+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3585 好神的题. 但是!!!!!!!!!!!!!!我线段树现在要开8倍空间才能过!!!!!!!!!! ...

  6. bzoj 3585: mex && 3339: Rmq Problem -- 主席树

    3585: mex Time Limit: 20 Sec  Memory Limit: 128 MB Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区 ...

  7. 3339: Rmq Problem

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1269  Solved: 665[Submit][Status][Discuss] Descripti ...

  8. 【BZOJ】【3339】Rmq Problem

    离线+线段树 Orz Hzwer,引用题解: 这一题在线似乎比较麻烦 至于离线.. 首先按照左端点将询问排序 然后一般可以这样考虑 首先如何得到1-i的sg值呢 这个可以一开始扫一遍完成 接着考虑l- ...

  9. 维护后面的position sg函数概念,离线+线段 bzoj 3339

    3339: Rmq Problem Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1160  Solved: 596[Submit][Status][ ...

随机推荐

  1. react-native初体验(2) — 认识路由

    如果学习止步于 hello world, 那么人生也太没意思了.这次要做一个看起来真实的应用.多添加几个页面,让他们可以交互,动起来. react-native 官方推荐使用 react-naviga ...

  2. Kickstart Round H 2018

    打了ks好久都没有更新 诶,自己的粗心真的是没救了,A题大数据都能错 A #include <iostream> #include <cstdio> #include < ...

  3. halcon 手眼标定的坐标转换原理讲解

    原文链接:https://blog.csdn.net/opencv_learner/article/details/82113323 一直以来,对于手眼标定所涉及到的坐标系及坐标系之间的转换关系都没能 ...

  4. 【Docker】第四篇 Docker仓库管理

    一.仓库概述 仓库(Repository):Docker仓库主要用于镜像的存储,它是镜像分发.部署的关键.仓库分为公共仓库和私有仓库. 注册服务器(Registry)和仓库区别:注册服务器上往往存放着 ...

  5. NO.6:自学python之路------面向对象、内存持久化

    引言 虽然加速学习了,可是还是感觉进度不够快,担心.还得准备毕业论文,真是焦虑. 正文 面向对象 编程是程序员用特定语法+数据结构+算法组成的代码,告诉计算机如何执行任务的过程.对不同的编程方式的特点 ...

  6. Plasma Cash 合约解读

    作者介绍 虫洞社区·签约作者 steven bai Plasma Cash 合约解读 Plasma Cash 合约解读 1. 合约代码 2. 合约文件简单介绍 3. Plasma Cash 的基础数据 ...

  7. Homebrew -- 安装与使用

    使用 React Native,必须安装的依赖有:Node.Watchman 和 React Native 命令行工具以及 Xcode. 推荐使用Homebrew来安装 Node 和 Watchman ...

  8. 在Web Page中包含PHP代码

    PHP代码可以出现在Web Page的任何位置,甚至在HTML的标签里面也可以.有4中方式在Web Page中包含PHP代码: 使用<?php ... ?>标签 <!doctype ...

  9. SQL 查一年内的数据

    --查询今年的 select * from 表 where datediff(yy,时间字段,GETDATE())=0 --查询去年的 select * from 表 where datediff(y ...

  10. Spring MVC controller的方法返回值

    ModeAndView 可以在构造时确定需要跳转的页面也可以通过setViewName方法来确定需要跳转的页面 String 指定返回页面的视图名称,页面跳转,如果加了@ResponseBody注解, ...