Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39927 氩_wjy 【S】T1 C++ 运行超时 90 2000 MS 508800 KB 2398 2026-02-09 19:43:50

Tests(9/10):


#include<bits/stdc++.h> // #define int long long #define lb(x) ((x)&(-(x))) #define endl '\n' using namespace std; const int N=2e6+7; bool ST; vector<int> E[N]; int n,q,a[N],f[N],bfn[N],cnt; int Be[N],Fi[N]; int p[N],l[N],r[N]; int Ans[N]; inline void BFS(){ for(int i=1;i<=n;i++)Be[i]=1e9; queue<int> q; q.push(1); while(!q.empty()){ int u=q.front();q.pop(); bfn[u]=++cnt; for(auto v:E[u]){ if(v==f[u])continue; f[v]=u,q.push(v); } } for(int i=2;i<=n;i++){ Be[f[i]]=min(Be[f[i]],bfn[i]); Fi[f[i]]=max(Fi[f[i]],bfn[i]); } } struct OP{ int x,v,id,op; //op = 0 -> insert op = 1/-1 -> query OP(int _x=0,int _v=0,int _id=0,int _op=0){x=_x,v=_v,id=_id,op=_op;} }; vector<OP> qq[N]; int t[N]; bool ED; inline void Add(int x,int dt){ for(int i=x;i<=n;i+=lb(i))t[i]+=dt; } inline int Qry(int x){int Ans=0; for(int i=x;i;i-=lb(i))Ans+=t[i]; return Ans; } inline int read(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} return x; } inline void wr(int x){ if(x<10)return void(putchar(x+'0')); wr(x/10),putchar(x%10+'0'); } signed main(){ #ifndef ONLINE_JUDGE freopen("count.in","r",stdin); freopen("count.out","w",stdout); #endif n=read(),q=read(); for(int i=1;i<=n;i++)a[i]=read(); for(int i=1;i<n;i++){ int u,v;u=read(),v=read(); E[u].push_back(v); E[v].push_back(u); } BFS(); for(int i=1;i<=n;i++)qq[i].push_back(OP(bfn[i],a[i],0,0)); for(int i=1;i<=q;i++){ p[i]=read(),l[i]=read(),r[i]=read(); Ans[i]+=(l[i]<=f[p[i]]&&f[p[i]]<=r[i])*a[f[p[i]]]; if(!Fi[p[i]])continue; qq[r[i]].push_back(OP(Fi[p[i]],0,i,1)); qq[r[i]].push_back(OP(Be[p[i]]-1,0,i,-1)); qq[l[i]-1].push_back(OP(Fi[p[i]],0,i,-1)); qq[l[i]-1].push_back(OP(Be[p[i]]-1,0,i,1)); } for(int i=1;i<=n;i++){ for(auto qr:qq[i]){ if(!qr.op)Add(qr.x,qr.v); else Ans[qr.id]+=(qr.op==1?Qry(qr.x):-Qry(qr.x)); } } for(int i=1;i<=q;i++)wr(Ans[i]),putchar('\n'); fflush(stdout); // cerr<<abs(&ST-&ED)/1048576.0<<endl; return 0; }


测评信息: