Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39935 22fhq 【S】T1 C++ 运行超时 90 2000 MS 250460 KB 1324 2026-02-09 20:09:56

Tests(9/10):


#include<bits/stdc++.h> void read(int &x){ x=0;char c=getchar();bool neg=0; for(;!isdigit(c);c=getchar())neg=(c=='-'); for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48); if(neg)x=-x; } #define read2(a,b) read(a),read(b) #define read3(a,b,c) read2(a,b),read(c) #define read4(a,b,c,d) read3(a,b,c),read(d) using namespace std; int n,q,a[2000005],d[2000005]; vector<int>e[2000005],s[2000005]; void slv(){ read2(n,q); for(int i=1;i<=n;i++)read(a[i]); for(int i=1;i<n;i++){ int u,v; read2(u,v); e[u].push_back(v); e[v].push_back(u); } for(int i=1;i<=n;i++){ d[i]=e[i].size(); e[i].push_back(0); sort(e[i].begin(),e[i].end()); s[i].resize(d[i]+1); for(int j=1;j<=d[i];j++)s[i][j]=s[i][j-1]+a[e[i][j]]; } while(q--){ int u,l,r; read3(u,l,r); int L=0,R=d[u],mid; while(L<R){ mid=(L+R+1>>1); if(e[u][mid]>=l)R=mid-1; else L=mid; } l=L; L=0,R=d[u],mid; while(L<R){ mid=(L+R+1>>1); if(e[u][mid]>r)R=mid-1; else L=mid; } r=L; printf("%d\n",s[u][r]-s[u][l]); } } signed main(){ slv(); return 0; }


测评信息: