對於每個詢問,我們先考慮插入1~r中每個數的答案,這樣子就不用考慮後面數對現在的影響

那麼我們可以在權值線段樹的每一個位置存儲每一個值最後一次結束的位置

問題變成了,如何判斷區間連續?

我們可以對線段樹對應區間所有節點權值取最小值,我們發現如果有一個值<l,那麼有一個數不在區間內出現,區間就不連續,否則區間就連續

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 200010
  4. int n,m,a[N],lc[N<<5],rc[N<<5],rt[N],sz[N<<5],ct,la,t;
  5. void ins(int &o,int p,int l,int r,int x,int y){
  6. if(!o)o=++ct;
  7. if(l==r){
  8. sz[o]=y;
  9. return;
  10. }
  11. int mid=(l+r)/2;
  12. if(x<=mid){
  13. rc[o]=rc[p];
  14. ins(lc[o],lc[p],l,mid,x,y);
  15. }
  16. else{
  17. lc[o]=lc[p];
  18. ins(rc[o],rc[p],mid+1,r,x,y);
  19. }
  20. sz[o]=min(sz[lc[o]],sz[rc[o]]);
  21. }
  22. int q(int o,int p,int l,int r,int x){
  23. if(l==r)return l;
  24. int mid=(l+r)/2;
  25. if(sz[lc[o]]>=x)return q(rc[o],rc[p],mid+1,r,x);
  26. return q(lc[o],lc[p],l,mid,x);
  27. }
  28. int main(){
  29. freopen("mex.in","r",stdin);
  30. freopen("mex.out","w",stdout);
  31. scanf("%d%d%d",&n,&m,&t);
  32. for(int i=1;i<=n;i++){
  33. scanf("%d",&a[i]);
  34. ins(rt[i],rt[i-1],0,1e9+5,a[i],i);
  35. }
  36. while(m--){
  37. int l,r;
  38. scanf("%d%d",&l,&r);
  39. if(t)l^=la,r^=la;
  40. la=q(rt[r],rt[l-1],0,1e9+5,l);
  41. printf("%d\n",la);
  42. }
  43. }

jzoj5710的更多相关文章

随机推荐

  1. OAuth2.0 Owin 授权问题

    http://www.cnblogs.com/dudu/p/4569857.html OAuth2.0 一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前 ...

  2. 对于某些浏览器不支持placeholder的解决办法

    $(function () { if (!placeholderSupport()) { $('[placeholder]').focus(function () { var input = $(th ...

  3. vue-cli启动本地服务,局域网下通过ip访问不到的原因

    1.问题描述: 新开发了一个vue-cli项目,想通过手机查看效果,发现访问不到,ip地址和端口号都没错但是手机访问不到,在本机电脑浏览器输入ip端口号一样访问不到,只能通过localhost:808 ...

  4. restful发布服务

    概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着不断获取资源的表示方式,客户端应用 ...

  5. svn一次性add/delete所有文件

    Linux命令行下,svn add 一次性批量上传 命令行下操作svn没有使用界面形式的TortoiseSVN直观,但是不管怎样,命令行下操作svn还是有它的有点,如果你碰到一次需要svn add许多 ...

  6. BZOJ1106[POI2007]立方体大作战tet - 树状数组

    描述 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个不同的编号,每个编 ...

  7. MySql 几个小技巧

    分页查看: 在 mysql 环境下,执行命令: pager more,之后的结果分屏了. 简明扼要地查看表结构: describe table_name

  8. vue的过滤器

    Vue.Js 提供了强大的过滤器API,能够对数据进行各种过滤处理,返回需要的结果 vue的过滤器一般在JavaScript 表达式的尾部,由“|”符号指示: 过滤器可以让我们的代码更加优美,一般可以 ...

  9. div添加滚动条常见属性

    由于页面上的表里的末一列的内容太多,显示的内容不美观了,就想在这一列上加滚动条,在网上搜了一下,用div可以实现,感觉还不错,下面的是在网上查到的.  想在div里添加滚动条设置一下style就ok了 ...

  10. 2018.09.27 codeforces618F. Double Knapsack(抽屉原理+构造)

    传送门 思维题. 考虑维护两个数列的前缀和a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1​,a2​,a3​,...,an​和b1,b2,b3,...,bnb_1,b_2,b_ ...