{"problem":{"name":"小清新数据结构题","description":{"content":"给定 $n$ 条数据，第 $i$ 条数据有 $s_i$ 个数，依次记为 $a_{i, 1}, a_{i, 2}, \\dots a_{i, s_i}$。 现在有 $q$ 次询问，每次询问第 $x$ 条数据的第 $y$ 个数，即 $a_{x,y}$ 是多少。 为了避免输出过大，你只需要输出所有询问的答案的**按位异或**和。 按位异或指的是 C++ 中的「^」运算符。你可以参考「说明/提示」中的","description_type":"Markdown"},"platform":"Luogu","limit":{"time_limit":2000,"memory_limit":524288},"difficulty":{"LuoguStyle":"P2"},"is_remote":true,"is_sync":true,"sync_url":null,"sign":"LGB3665"},"statements":[{"statement_type":"Markdown","content":"给定 $n$ 条数据，第 $i$ 条数据有 $s_i$ 个数，依次记为 $a_{i, 1}, a_{i, 2}, \\dots a_{i, s_i}$。\n\n现在有 $q$ 次询问，每次询问第 $x$ 条数据的第 $y$ 个数，即 $a_{x,y}$ 是多少。\n\n为了避免输出过大，你只需要输出所有询问的答案的**按位异或**和。\n\n按位异或指的是 C++ 中的「^」运算符。你可以参考「说明/提示」中的代码求出若干个数的按位异或和。\n\n## Input\n\n第一行是两个整数，表示数据条数 $n$ 和询问次数 $q$。\n\n接下来 $n$ 行，每行依次表示一条数据，每行首先是一个整数，表示本条数据的数字个数 $s_i$，接下来 $s_i$ 个整数，依次表示本条数据的每个数字。\n\n接下来 $q$ 行，每行两个整数 $x, y$，表示一次查询。\n\n## Output\n\n输出一行一个整数表示所有询问的答案的按位异或之和。\n\n[samples]\n\n## Note\n\n### 样例 1 解释\n\n第一次询问的结果为 $5$，第二次询问的结果为 $2$。他们做按位异或的结果为 $7$。\n\n### 数据规模与约定\n\n对于全部的测试点，保证 $1 \\leq n, q, s_i \\leq 3 \\times 10^6$，$0 \\leq a_i \\lt 2^{32}$，$1 \\leq x \\leq n$，$1 \\leq y \\leq s_x$，且 $\\sum\\limits_{i = 1}^n s_i \\leq 5 \\times 10^6$，即 $s_1 + s_2 + \\dots + s_n \\leq 5 \\times 10^6$。\n\n### 提示\n\n对于使用 C++ 的选手，你可以用如下的函数返回若干个数的按位异或和。\n```cpp\n#include <vector>\nunsigned int getXorSum(const std::vector<unsigned int>& rec) {\n  unsigned ret = 0;\n  for (int i = 0; i < rec.size(); ++i) ret ^= rec[i];\n  return ret;\n} // 将需要求按位异或和的数放在 vector 中传参。\n```\n\n请注意大量数据读入对程序效率造成的影响。","is_translate":false,"language":"English"}],"meta":{"iden":"LGB3665","tags":["O2优化"],"sample_group":[["2 2\n2 1 2\n3 4 5 6\n2 2\n1 2","7"]],"created_at":"2026-03-03 11:09:25"}}