#2016. 「SCOI2016」美味

思路:

  主席树;

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxa 262143
#define maxn 200005
#define maxtree maxa*40
int n,m,ch[maxtree][],val[maxtree],L[maxtree],R[maxtree];
int root[maxn],mid[maxtree],tot;
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void build(int &now,int l,int r)
{
now=++tot,L[now]=l,R[now]=r;
if(l==r) return;mid[now]=l+r>>;
build(ch[now][],l,mid[now]);
build(ch[now][],mid[now]+,r);
}
void add(int &now,int pre,int x)
{
now=++tot,val[now]=val[pre]+,L[now]=L[pre],R[now]=R[pre];
if(L[now]==R[now]) return ;mid[now]=mid[pre];
if(x<=mid[now]) add(ch[now][],ch[pre][],x),ch[now][]=ch[pre][];
else add(ch[now][],ch[pre][],x),ch[now][]=ch[pre][];
}
bool query(int now,int pre,int l,int r)
{
if(L[now]>=l&&R[now]<=r) return (val[now]-val[pre])?true:false;
if(l<=mid[now]) if(query(ch[now][],ch[pre][],l,r)) return true;
if(r>mid[now]) if(query(ch[now][],ch[pre][],l,r)) return true;
return false;
}
int solve(int now,int pre,int deep,int b,int x,int l,int r)
{
if(deep<) return ;int mi=l+r>>;
if(b<(<<deep))
{
if(query(root[now],root[pre],max(,mi+-x),r-x)) return solve(now,pre,deep-,b,x,mi+,r)+(<<deep);
else return solve(now,pre,deep-,b,x,l,mi);
}
else
{
if(mi-x<||query(root[now],root[pre],max(l-x,),mi-x)) return solve(now,pre,deep-,b-(<<deep),x,l,mi)+(<<deep);
else return solve(now,pre,deep-,b-(<<deep),x,mi+,r);
}
}
int main()
{
freopen("data.txt","r",stdin);
in(n),in(m),build(root[],,maxa);int pos,b,x,l,r;
for(int i=;i<=n;i++) in(pos),add(root[i],root[i-],pos);
while(m--) in(b),in(x),in(l),in(r),printf("%d\n",solve(r,l-,,b,x,,maxa));
return ;
}

最新文章

  1. 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
  2. [LeetCode] Find Leaves of Binary Tree 找二叉树的叶节点
  3. HTTPS那些事(二)SSL证书(转载)
  4. [WPF系列]-Prism+EF
  5. Android源码编译出错解决办法
  6. Intellij Idea使用技巧、快捷键
  7. 还是畅通工程(MST)
  8. HDU4288:Coder(线段树单点更新版 &amp;&amp; 暴力版)
  9. javascript的执行顺序(转载)
  10. java_linear list
  11. 第十七章 调试及安全性(In .net4.5) 之 程序诊断
  12. poj 3249 拓扑排序 and 动态规划
  13. 虚拟器运行iOS8地图提示错误
  14. 字体在Android View中的输出 drawText
  15. hdu 5138
  16. LeetCode——ZigZag Conversion
  17. Mybatis-多对多
  18. jQuery 异步上传插件 Uploadify302 使用 (JavaEE Spring MVC)
  19. [Swift]LeetCode884. 两句话中的不常见单词 | Uncommon Words from Two Sentences
  20. Linux 学大纲

热门文章

  1. centos7安装uwsgi报错
  2. Shell脚本循环读取文件中的每一行
  3. 洛谷 P3730 曼哈顿交易
  4. 图论:Prufer编码-Cayley定理
  5. PowerDesigner逆向工程
  6. No cached version of ..... available for offline mode.
  7. Item 4 ----通过私有构造器强化不可实例化的能力
  8. 【BZOJ4817】【SDOI2017】树点涂色 [LCT][线段树]
  9. 「6月雅礼集训 2017 Day8」gcd
  10. 洛谷P2901 [USACO08MAR]牛慢跑Cow Jogging