QOJ.ac

QOJ

Time Limit: 6.0 s Memory Limit: 512 MB Total points: 100

#17226. Cow Circle

الإحصائيات

题目描述

Farmer John 有 $N$ ($1 \leq N \leq 5000$) 头奶牛站在一个圆环形跑道上,跑道被分为 $M$ ($1 \leq M \leq 10^6$) 个等间距的位置,编号为 $0$ 到 $M-1$(顺时针方向)。奶牛 $i$ 最初位于位置 $x_i$,其中 $0 = x_1 < x_2 < \dots < x_N < M$。

对于每头奶牛 $1 \leq i \leq N$,它会独立且随机地选择顺时针或逆时针方向,选择概率由该奶牛特定的参数决定。一旦奶牛选定了初始方向,它便会以每分钟一个位置的恒定速度沿该方向持续移动。当两头奶牛相遇(即它们占据同一位置)时,它们会发生碰撞:立即反转方向,并继续以相同的速度向新方向移动。

Farmer John 想知道奶牛 $1$ 最终会停在哪里。对于每个 $0 \leq i < M$,求出 $K$ ($1 \leq K \leq 10^{18}$) 分钟后奶牛 $1$ 位于位置 $i$ 的概率。

输入格式

第一行包含 $T$ ($1 \leq T \leq 100$),表示独立测试用例的数量。每个测试用例的格式如下:

每个测试用例的第一行包含 $N$ ($1 \leq N \leq 5000$),$M$ ($1 \leq M \leq 10^6$) 和 $K$ ($1 \leq K \leq 10^{18}$)。

第二行包含 $N$ 个整数 $p_1, \dots, p_N$ ($0 \leq p_i < 10^9 + 7$),如果奶牛 $i$ 向顺时针方向移动的概率为 $\frac{a_i}{b_i}$,则满足 $p_i \cdot b_i \equiv a_i \pmod{10^9+7}$。

第三行(最后一行)包含 $N$ 个整数 $x_1, x_2, \dots, x_N$。

保证所有测试用例的 $N^2$ 之和不超过 $5000^2$,且所有测试用例的 $M$ 之和不超过 $10^6$。

输出格式

为每个测试用例输出一行。每行的格式如下:

对于每个 $0 \leq i < M$,设 $\frac{p_i}{q_i}$ 为 $K$ 分钟后奶牛 $1$ 位于位置 $i$ 的概率。输出 $M$ 个空格分隔的整数 $p_iq_i^{-1} \pmod{10^9 + 7}$(其中 $p_iq_i^{-1} \cdot q_i \equiv p_i \pmod{10^9+7}$)。

样例

样例输入 1

3
2 2 1
500000004 500000004 
0 1
3 3 1
500000004 500000004 500000004
0 1 2
5 10 13
500000004 1 500000004 0 500000004
0 3 4 7 9

样例输出 1

500000004 500000004
500000004 250000002 250000002
0 0 0 125000001 375000003 0 125000001 375000003 0 0

说明 1

对于第一个测试用例,两头奶牛都有 $\frac{1}{2}$ 的概率向任一方向移动。如果两头奶牛选择相同的方向,它们最终会交换位置(因此奶牛 $1$ 最终位于 $1$)。否则,它们会在中间碰撞并弹回各自的初始位置。因此,奶牛 $1$ 最终位于 $0$ 的概率为 $\frac{1}{2}$,位于 $1$ 的概率为 $\frac{1}{2}$。

对于第二个测试用例,所有奶牛同样有 $\frac{1}{2}$ 的概率向任一方向移动。对于每种方向组合,奶牛 $1$ 的最终位置如下:

  • 顺, 顺, 顺: $1$
  • 顺, 顺, 逆: $1$
  • 逆, 逆, 逆: $2$
  • 逆, 顺, 逆: $2$
  • 顺, 逆, 顺: $0$
  • 顺, 逆, 逆: $0$
  • 逆, 顺, 顺: $0$
  • 逆, 逆, 顺: $0$

子任务

  • 输入 2: $K \leq 100, N \leq 10$。
  • 输入 3: $N \leq 10$。
  • 输入 4-7: $\sum N^3 \leq 500^3$。
  • 输入 8-11: $K < \frac{M}{2}$。
  • 输入 12-15: 无额外限制。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.