#include<iostream>
using namespace std;
typedef long long ll;
ll query(ll n,ll L, ll R ,ll l, ll r)
{
if(R<l||L>r||n==0)
return 0;
if(n==1)return 1;
ll mid = (l+r)>>1;
return query(n>>1,L,R,l,mid-1)+query(n&1,L,R,mid,mid)+query(n>>1,L,R,mid+1,r);
}
int main()
{
ll n;
ll l;ll r;
cin>>n>>l>>r;
ll x = n;
ll len = 1;
while(x>1)
{
x >>=1;
len = len *2+1;
}
cout<<query(n,l,r,1,len)<<endl;
return 0;
}
Codeforces 768B Code For 1 (简化版线段树)
最新推荐文章于 2024-07-25 11:15:19 发布
本文介绍了一个基于递归的区间查询算法实现,通过使用位运算和递归调用的方法,在给定的区间内进行高效的数据查询。该算法适用于解决一些特定类型的计算机科学问题,特别是那些涉及区间操作的问题。
637

被折叠的 条评论
为什么被折叠?



