Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39929 Gapple 【S】T1 C++ 运行超时 90 2000 MS 263776 KB 1477 2026-02-09 19:59:47

Tests(9/10):


#include <algorithm> #include <iostream> #include <utility> #include <vector> using namespace std; using i64 = long long; constexpr int INF = 0x3f3f3f3f; vector<vector<pair<int, int>>> idx; vector<vector<int>> tree; vector<int> a; void prepare(int u, int fa = -1) { for (auto v : tree[u]) { idx[u].emplace_back(v, a[v]); if (v != fa) prepare(v, u); } } inline int query(int u, int l, int r) { const auto& id = idx[u]; return lower_bound(id.begin(), id.end(), make_pair(l, -INF))->second - lower_bound(id.begin(), id.end(), make_pair(r, INF))->second; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, q; cin >> n >> q; a.resize(n + 1); for (int i = 1; i <= n; ++i) cin >> a[i]; tree.resize(n + 1); for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; tree[u].push_back(v); tree[v].push_back(u); } for (int i = 1; i <= n; ++i) sort(tree[i].begin(), tree[i].end()); idx.resize(n + 1); prepare(1); for (int i = 1; i <= n; ++i) { idx[i].emplace_back(n + 1, 0); for (int j = idx[i].size() - 3; j >= 0; --j) idx[i][j].second += idx[i][j + 1].second; } while (q-- > 0) { int u, l, r; cin >> u >> l >> r; cout << query(u, l, r) << '\n'; } return 0; }


测评信息: