#P6760. [THUPC2019] 大碗宽面

[THUPC2019] 大碗宽面

题目描述

Yazid 喜欢吃大碗宽面。现有 mm 碗宽面,其中第 ii 碗宽面(1im1 \le i \le m)共包含 nin_i 根面条,它们的宽度分别为 Ai,1,Ai,2,,Ai,nA_{i,1},A_{i,2},\cdots,A_{i,n}

f(u,v)f(u,v) 表示若混合第 uu 碗宽面和第 vv 碗宽面,将得到的超大碗宽面的第 nu+nv+12\left\lfloor\dfrac{n_u +n_v +1}{2}\right\rfloor 小的面条宽度(x\lfloor x \rfloor 表示不超过 xx 的最大整数)。

Yazid 想求出所有 f(u,v)f(u,v),但为了节省你的输出时间,你只需要对所有 1um1 \le u \le m 求出:

  • $R(u)=\mathop{\rm xor}\limits_{v=1}^{m} {(f(u,v)+u+v)}$(xor\rm xor 指异或运算,在 C++ 语言中对应 ^ 运算符)。

输入格式

第一行一个正整数 mm,表示宽面碗数。

接下来 mm 行,每行若干个用单个空格隔开的整数描述一碗宽面:这部分的第 ii 行的第一个正整数为 nin_i,表示第 ii 碗宽面包含的面条数;接下来 nin_i 个非负整数 Ai,jA_{i,j} 描述各面条的宽度。

输出格式

输出 nn 行,每行一个整数,其中第 ii 行的整数为 R(i)R(i)

3
3 1 2 3
3 3 4 5
2 4 2
4
7
7

提示

样例说明

对于样例 11

  • $\def\x{\operatorname{xor}} R(1) = {(f(1,1)+2)}\x{(f(1,2)+3)}\x{(f(1,3)+4)} = 4\x6\x6 = 4$
  • $\def\x{\operatorname{xor}} R(2) = {(f(2,1)+3)}\x{(f(2,2)+4)}\x{(f(2,3)+5)} = 6\x8\x9 = 7$
  • $\def\x{\operatorname{xor}} R(3) = {(f(3,1)+4)}\x{(f(3,2)+5)}\x{(f(3,3)+6)} = 6\x9\x8 = 7$

数据规模与约定

对于 100%100\% 的数据,m104m \le 10^4ni500n_i \le 5000Ai,j1090 \le A_{i,j} \le 10^9

说明

来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2019。

题解等资源可在 https://github.com/wangyurzee7/THUPC2019 查看。