#include #include #include #include #include #include using namespace std; const int N = 1e5 + 10; typedef long long LL; typedef pair PII; int n, m; LL a[N]; LL ans[N]; // 树状数组模板 LL c[N]; #define lowbit(x) (x & -x) void add(int x, LL d) { for (int i = x; i <= n; i += lowbit(i)) c[i] += d; } LL query(int x) { LL res = 0; for (int i = x; i; i -= lowbit(i)) res += c[i]; return res; } int main() { // 加快读入 ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); int T; cin >> T; while (T--) { unordered_map b; vector q[N]; // 这是一个二维数组,单元格中是PII memset(ans, 0, sizeof ans); memset(c, 0, sizeof c); cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; cin >> m; for (int i = 1; i <= m; i++) { int l, r; cin >> l >> r; q[r].push_back({l, i}); // 以r结尾的有一个查询:{id=i,l} } for (int i = 1; i <= n; i++) { if (b.count(a[i])) add(b[a[i]], -a[i]); b[a[i]] = i; add(i, a[i]); // 枚举以i为结尾的所有查询 for (auto c : q[i]) ans[c.second] = query(i) - query(c.first - 1); } // 输出 for (int i = 1; i <= m; i++) printf("%lld\n", ans[i]); } return 0; }