社区讨论
学OI没多久,问一下各位奆佬神犇为什么#10 WA了
P3950部落冲突参与者 8已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @mi6wkhm0
- 此快照首次捕获于
- 2025/11/20 11:59 4 个月前
- 此快照最后确认于
- 2025/11/20 11:59 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
struct edge{
ll to,prev;
};
struct SegmentTree{
ll l,r,sum,tag;
};
struct battle{
ll x,y;
};
const ll MAXN=300051;
battle bt[MAXN];
edge ed[MAXN];
SegmentTree tree[MAXN<<2];
ll last[MAXN],val[MAXN],depth[MAXN],fa[MAXN],size[MAXN],heavy[MAXN];
ll id[MAXN],pre[MAXN],top[MAXN];
ll tot,nc,cnt,ccnt,x,y,from,to,num,toto,tx;
char op;
inline ll read()
{
register ll num=0,neg=1;
register char ch=getchar();
while(!isdigit(ch)&&ch!='-')
{
ch=getchar();
}
if(ch=='-')
{
neg=-1;
ch=getchar();
}
while(isdigit(ch))
{
num=(num<<3)+(num<<1)+(ch-'0');
ch=getchar();
}
return num*neg;
}
inline void addEdge(ll from,ll to)
{
ed[++tot].prev=last[from];
ed[tot].to=to;
last[from]=tot;
}
inline void update(ll node)
{
tree[node].sum=tree[node<<1].sum+tree[(node<<1)|1].sum;
}
inline void create(ll l,ll r,ll node)
{
tree[node].l=l,tree[node].r=r;
if(l==r)
{
tree[node].sum=val[l];
return;
}
ll mid=(l+r)>>1;
create(l,mid,node<<1);
create(mid+1,r,(node<<1)|1);
update(node);
}
inline void spread(ll node)
{
if(tree[node].tag)
{
tree[node<<1].sum+=tree[node].tag*(tree[node<<1].r-tree[node<<1].l+1);
tree[(node<<1)|1].sum+=tree[node].tag*(tree[(node<<1)|1].r-tree[(node<<1)|1].l+1);
tree[node<<1].tag+=tree[node].tag;
tree[(node<<1)|1].tag+=tree[node].tag;
tree[node].tag=0;
}
}
inline void change(ll pos,ll val,ll node)
{
if(tree[node].l==tree[node].r)
{
tree[node].sum+=val;
return;
}
ll mid=(tree[node].l+tree[node].r)>>1;
if(pos<=mid)
{
change(pos,val,node<<1);
}
else
{
change(pos,val,(node<<1)|1);
}
update(node);
}
inline void add(ll l,ll r,ll val,ll node)
{
if(l<=tree[node].l&&r>=tree[node].r)
{
tree[node].sum+=val*(tree[node].r-tree[node].l+1);
tree[node].tag+=val;
return;
}
spread(node);
ll mid=(tree[node].l+tree[node].r)>>1;
if(l<=mid)
{
add(l,r,val,node<<1);
}
if(r>mid)
{
add(l,r,val,(node<<1)|1);
}
update(node);
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...