33OJ
登录 注册

#P17652. [IO 2025 #1] 丝之歌

    ID: 20300 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度提高+/省选− 上传者: 标签>动态规划 DP计算几何2025

[IO 2025 #1] 丝之歌

题目描述

在法鲁姆的丝绸平原上,有 nn 只昆虫。每只昆虫都有三种角色之一:恰好一只歌者、s−1s-1 只回声者,以及 n−sn-s 只沉默者。

时刻 00,唯一的歌者发出一声呼喊。声波不会衰减,并以相同的速度均匀地向各个方向传播:到达距离歌者为 dd 的位置,需要 dd 单位时间。此后,每只回声者都在第一次听到其他昆虫的呼喊的时刻,立即发出一声呼喊。这些声波的传播方式与最初的声波相同。不同声波之间不会相互作用,也不会影响彼此。

一名听众位于 (0,0)(0,0),记录声波到达的时刻:首先恰好听到一声呼喊;经过一段非零的时间后,同时听到另外 c2c_2 声呼喊;再经过一段非零的时间后,听到另外 c3c_3 声呼喊;如此一共出现 kk 个到达时刻,得到序列 c1,c2,c3,…,ckc_1,c_2,c_3,\ldots,c_k。

注意,每只非沉默者都只呼喊一次,所以 ∑i=1kci=s\sum_{i=1}^{k}c_i=s。

已知平面上所有 nn 只昆虫的坐标。请计算有多少种方法,可以从中选出恰好一只歌者和恰好 s−1s-1 只回声者,使听众的观察结果与给定序列 cic_i 一致。其余昆虫自动成为沉默者。答案对 109+710^9+7 取模。

输入格式

输入包含多组测试数据。第一行包含一个整数 tt,表示测试数据组数,1≤t≤5001\le t\le500。接下来给出各组测试数据。

每组数据第一行包含整数 n,kn,k,分别表示昆虫数量,以及预期在 (0,0)(0,0) 听到呼喊的不同到达时刻数量,1≤n≤10001\le n\le1000,1≤k≤min⁡(n,10)1\le k\le\min(n,10)。

第二行包含 nn 个整数,表示昆虫的横坐标 xix_i。第三行也包含 nn 个整数,表示昆虫的纵坐标 yiy_i,∣xi∣,∣yi∣≤109|x_i|,|y_i|\le10^9。

第四行包含整数 c1,…,ckc_1,\ldots,c_k,表示在不同到达时刻,听众分别听到多少声呼喊,1≤ci≤n1\le c_i\le n,c1=1c_1=1,∑i=1kci≤n\sum_{i=1}^{k}c_i\le n。这些数按照时间先后顺序给出。

保证所有测试数据的 nn 之和不超过 10001000。

输出格式

对于每组测试数据,输出一个整数,表示符合要求的角色分配方法数量,对 109+710^9+7 取模。

8
1 1
1
1
1
2 1
2 0
0 1
1
2 2
1 2
0 0
1 1
3 2
1 0 2
0 1 0
1 2
3 2
0 1 0
0 0 1
1 2
4 3
0 1 0 1
0 0 1 1
1 2 1
6 3
0 1 0 1 -1 1
0 0 1 1 1 -1
1 2 3
3 2
1 0 -1
0 1 0
1 1
1
2
1
0
1
1
1
6

提示

注意,c1=1c_1=1 并不保证任意一只昆虫都能成为歌者。以下解释中,声音的传播速度为 11。

  1. 第一组数据中,只有一只位于 (1,1)(1,1) 的昆虫。让它成为歌者后,听众在时刻 2\sqrt2 听到一声呼喊。
  2. 第二组数据中,两只昆虫分别位于 (2,0)(2,0) 和 (0,1)(0,1)。任意一只都可以成为歌者:选择第一只时,听众在时刻 22 听到呼喊;选择第二只时,听众在时刻 11 听到呼喊。两种情况均满足要求。
  3. 第三组数据中,两只昆虫的坐标分别为 (1,0)(1,0) 和 (2,0)(2,0)。如果让第一只成为回声者,两声呼喊会同时到达听众的位置,不满足题目要求。