AT_wupc2019_h.Doki Doki Programming Clubs!

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在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\) 取模后的结果。

输入输出样例

  • 输入#1

    3
    1 7
    2 5 6
    3 3 3 4
    3
    0 1
    0 2
    1 2

    输出#1

    77
    70
    53
  • 输入#2

    2
    3 1000000000 999999999 999999998
    10 1 2 3 4 5 6 7 8 9 10
    1
    0 1

    输出#2

    999999571

说明/提示

约束条件

  • \(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 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页