AT_wupc2019_h Doki Doki Programming Clubs!

题目描述

在W大学,社团活动非常活跃,有 \\(N\\) 个竞技编程社团。社团 \\(i\\ (0 \leq i \leq N-1)\\) 的成员人数为 \\(K_i\\),其中第 \\(j\\ (0 \leq j \leq K_i-1)\\) 名成员的评分为 \\(A_{i,j}\\)。 每天,各社团为了争夺电脑室的使用权常常争执不下,最终决定通过编程比赛来一决高下。比赛时,每个社团成员按顺序进行一对一的比拼。若某个社团人数较少,他们的成员需要循环出战,直到全部比赛结束为止。 社团 \\(X\\) 和社团 \\(Y\\) 比赛的“激烈程度”由各成员评分乘积的总和来表示。具体计算如下: - 对于评分序列 \\(A_X, A_Y\\),在 \\(0 \leq j \leq \max(K_X, K_Y)-1\\) 范围内,其“激烈程度”为 \\(\sum (A_{X, j \mod K_X} \times A_{Y, j \mod K_Y})\\)。 现有 \\(Q\\) 场比赛,第 \\(i\\ (0 \leq i \leq Q-1)\\) 场比赛是社团 \\(X_i\\) 和社团 \\(Y_i\\) 的对决。请计算每场比赛的“激烈程度”。由于结果可能非常大,请输出其除以 \\(10^9+7\\) 的余数。

输入格式

从标准输入中获取以下格式的数据: ``` \(N\) \(K_0\ A_{0,0}\ A_{0,1}\ \dots\ A_{0,K_0-1}\) \(K_1\ A_{1,0}\ A_{1,1}\ \dots\ A_{1,K_1-1}\) \(\vdots\) \(K_{N-1}\ A_{{N-1},0}\ A_{{N-1},1}\ \dots\ A_{{N-1},K_{N-1}-1}\) \(Q\) \(X_0\ Y_0\) \(X_1\ Y_1\) \(\vdots\) \(X_{Q-1}\ Y_{Q-1}\) ```

输出格式

对于每个查询,输出对应答案对 \\(10^9+7\\) 取模后的结果。

说明/提示

### 约束条件 - \\(2 \leq N \leq 200000\\) - 每个社团至少有 1 名成员:\\(1 \leq K_i\\) - 所有社团成员总人数不超过 200000:\\(\sum K_i \leq 200000\\) - 成员评分在 1 到 \\(10^9\\) 之间:\\(1 \leq A_{i,j} \leq 10^9\\) - 比赛数量不超过 200000:\\(1 \leq Q \leq 200000\\) - 比赛的社团编号在 0 到 \\(N-1\\) 之间:\\(0 \leq X_i, Y_i \leq N-1\\) - 每场比赛涉及的两社团不同:\\(X_i \neq Y_i\\) - 所有输入均为整数。 ### 示例解释 例如,对于第二个查询,若序列为 \\(A_0, A_2\\),且 \\(K_0=1, K_2=3\\),则答案为 \\(A_{0,0} \times A_{2,0} + A_{0,0} \times A_{2,1} + A_{0,0} \times A_{2,2} = 70\\)。对于第三个查询,若序列为 \\(A_1, A_2\\),且 \\(K_1=2, K_2=3\\),则答案为 \\(A_{1,0} \times A_{2,0} + A_{1,1} \times A_{2,1} + A_{1,0} \times A_{2,2} = 53\\)。 请确保输出结果对 \\(10^9+7\\) 取模。 **本翻译由 AI 自动生成**