线段树的两种查询方式
2015-08-18 20:10
435 查看
int query(int l,int r,int id,int ll,int rr) { if(ll<=l&&r<=rr) { return tree[id].maxn; } int ans=-1; int mid=(l+r)>>1; if(mid>=ll) { ans=max(ans,query(l,mid,id<<1,ll,rr)); } if(mid<rr) ans=max(ans,query(mid+1,r,id<<1|1,ll,rr)); return ans; } int query(int l,int r,int id,int ll,int rr) { if(ll==l&&r==rr) { return tree[id].maxn; } int ans=-1; int mid=(l+r)>>1; if(mid>=rr) ans=max(ans,query(l,mid,id<<1,ll,rr)); else if(mid<ll) ans=max(ans,query(mid+1,r,id<<1|1,ll,rr)); else ans=max(query(l,mid,id<<1,ll,mid),query(mid+1,r,id<<1|1,mid+1,rr)); return ans; }
相关文章推荐
- 分词器之NLPIR加密文件在哪
- 微信支付又下一城:可以缴税了
- android---复杂布局的学习
- 动态行转列小记
- Hibernate4与hibernate3有错误的版本号的主要区别所造成的不一致
- jQuery---EasyUI小案列
- Linux cheat命令
- 2.9 Fibonacci数列
- hdu 2669
- IBOutlet 以及 IBAction 意义
- 支付宝 iOS SDK 官方下载页面
- 强连通分量 模板
- 总线设备驱动模型——总线篇
- 字符串转换成整数
- 关于Android—Activity 生命周期图
- 位运算(咱从度娘百科上摘的,谁造是原创还是转载)
- app在android studio的构建过程
- 浅谈 Qt 内存管理
- 两数之和等于目标值
- [Java]leetcode56 Merge Intervals