QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#775592 | #9104. Zayin and Forest | wallcrack# | RE | 0ms | 0kb | C++14 | 1.7kb | 2024-11-23 16:16:04 | 2024-11-23 16:16:05 |
answer
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const long long N=1e18+10,M=1e5+10;
long long n,m;
struct DynamicSegmentTree
{
struct Node
{
int ls,rs;
long long sum;
Node():ls(0),rs(0),sum(0){}
};
long long lim;
vector<Node> tr;
DynamicSegmentTree(long long a1):tr(2),lim(a1){}
int newNode()
{
tr.push_back(Node());
return tr.size()-1;
}
void add(long long x,long long v)
{
add(1,1,lim,x,v);
}
void add(int o,long long l,long long r,long long x,long long v)
{
if(l==r)
{
tr[o].sum+=v;
return ;
}
long long mid=l+r>>1;
if(x<=mid)
{
if(!tr[o].ls)tr[o].ls=newNode();
add(tr[o].ls,l,mid,x,v);
}
else
{
if(!tr[o].rs)tr[o].rs=newNode();
add(tr[o].rs,mid+1,r,x,v);
}
tr[o].sum=tr[tr[o].ls].sum+tr[tr[o].rs].sum;
}
long long query(long long l,long long r)
{
return query(1,1,lim,l,r);
}
long long query(int o,long long l,long long r,long long ql,long long qr)
{
if(l>=ql and r<=qr)return tr[o].sum;
long long mid=l+r>>1,sum=0;
if(l<=mid and tr[o].ls)
sum+=query(tr[o].ls,l,mid,ql,qr);
if(r>mid and tr[o].rs)
sum+=query(tr[o].rs,mid+1,r,ql,qr);
return sum;
}
};
ull F(ull x)
{
int p=0;
while(!((1ll<<p)&x and !(((1ll<<(p+1))&x))))p++;
ull res=(1ll<<(p+1));
for(int i=p+2;i<63;i++)
if(x&(1ll<<i))res|=(1ll<<i);
return res;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
DynamicSegmentTree seq(n);
for(int i=1;i<=m;i++)
{
int op;
cin>>op;
if(op==1)
{
long long x,v;
cin>>x>>v;
while(x<=n)
{
seq.add(x,v);
x=F(x);
}
}
else
{
long long l,r;
cin>>l>>r;
cout<<seq.query(l,r)<<"\n";
}
}
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
1000000000 20000 2 384578735 526547442 1 64211261 592970906 1 512065247 448267721 1 44993150 127180320 1 880319036 927623947 1 170536687 572121854 1 896600029 804033011 1 666246328 754201635 1 654066651 179982083 2 240989825 984888006 2 372004567 858916479 2 76127818 98606736 1 181794163 902842353 1...
output:
0 -729390784340407656 -8053291054738277826 0 -4351156108969420070 -2640296424153892293 3552123279086962778 -173219951803274377 184824929963965599 -6977281057729701624 -9121554378033758551 -8392039394096006320 -643338817159548638 -2978547094418595963 -8188011156447329066 1192771386929480308 -14721897...