QOJ.ac

QOJ

時間限制: 3 s 記憶體限制: 512 MB 總分: 100 互動

#8909. 完成计划,但不要超额完成

统计

这是一个交互式问题。

你需要为某个国家的汽车和零部件生产制定生产计划。该国共有 $n$ 个城市,每个城市都有一个参与生产的工厂。在第 $i$ 个城市,工厂的工人数量可以在 $l_i$ 到 $r_i$ 之间(包含边界)。

一些城市之间由双向道路连接,道路网络呈树状结构:从任意一个城市出发,可以通过唯一的方式到达任何其他城市,且不经过同一个城市两次。

生产计划定义为整数序列 $[a_1, a_2, \dots, a_n]$,其中 $a_i$ 是第 $i$ 个工厂的工人数量($l_i \le a_i \le r_i$)。制定生产计划后,部分工厂会被选为装配厂,用于生产汽车,其余工厂则生产零部件。如果没有任何两个装配厂直接由道路相连,则该选择被认为是合理的。在所有可能的合理选择中,选择装配厂工人总数最大的方案。该数值被称为计划 $[a_1, a_2, \dots, a_n]$ 的效率。

在本题中,对于某些给定的 $v_1, v_2, \dots, v_q$,你需要判断是否存在效率为 $v_i$ 的计划。如果存在,你可能需要提供该计划。

固定整数参数 $x, y$ 和 $m$。考虑计划 $[a_1, a_2, \dots, a_n]$。该计划的证书定义为数字 $k = \bigoplus_{j=1}^{n} ((x \cdot j + y \cdot a_j^2) \pmod m)$,其中 $\bigoplus$ 是按位异或运算。

制定计划的过程分为两个阶段。

在第一阶段,你将获得数值 $v_1, v_2, \dots, v_q$。对于每一个 $v_i$,你需要判断是否存在效率为 $v_i$ 的计划。如果不存在,输出 $-1$;如果存在,输出一个非负整数 $k_i$。

在第二阶段,部分计划将被验证:你将收到 $c$ 次查询,每次给出一个整数 $i$ ($1 \le i \le q$)。对于该查询,如果效率为 $v_i$ 的计划不存在,则输出 $-1$;否则,提供一个计划 $[a_1, a_2, \dots, a_n]$,其证书等于 $k_i$,且效率等于 $v_i$。

输入格式

首先,你的程序必须读取一个整数 $t$ ($1 \le t \le 10^4$),表示测试用例的数量。然后执行 $t$ 次交互。

对于每个测试用例: 第一行包含两个整数 $n, q$ ($2 \le n \le 2 \cdot 10^5, 1 \le q \le 2 \cdot 10^5$),分别表示城市数量和需要制定的计划数量。 第二行包含三个整数 $x, y, m$ ($11 \le m \le 2^{30}; 0 \le x, y < m$),用于计算计划证书的参数。 接下来的 $n-1$ 行描述了城市间的道路网络。第 $i$ 行包含两个整数 $s_i, f_i$ ($1 \le s_i, f_i \le n; s_i \neq f_i$),表示城市 $s_i$ 和 $f_i$ 之间有一条双向道路。保证这些道路构成一棵树。 接下来的 $n$ 行,第 $i$ 行包含两个整数 $l_i, r_i$ ($0 \le l_i \le r_i \le 10^9$),表示第 $i$ 个城市的工人数量限制。 最后一行包含 $q$ 个整数 $v_1, v_2, \dots, v_q$ ($0 \le v_i \le \sum_{i=1}^n r_i$),表示需要制定的计划效率。保证所有 $v_i$ 互不相同。

输出格式

读取输入后,你必须输出 $q$ 个整数 $k_1, k_2, \dots, k_q$ ($-1 \le k_i < 2^{30}$),其中如果无法制定效率为 $v_i$ 的计划,则 $k_i = -1$,否则 $0 \le k_i < 2^{30}$。

之后,可能会对部分计划进行验证。 验证过程如下:评测程序输出一行,包含一个整数 $i$ ($1 \le i \le q$),表示要验证的计划编号。保证所有请求的计划编号各不相同。 作为回应,如果无法制定第 $i$ 个计划,输出 $-1$(此时之前必须已输出 $k_i = -1$)。否则,输出 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($l_i \le a_i \le r_i$),表示制定的计划。该计划的证书必须等于 $k_i$,效率必须等于 $v_i$。

在 $c \ge 0$ 次验证后,评测程序将向你的程序输入 $i = 0$,表示该测试用例结束,你的程序应开始处理下一个测试用例或终止。

说明

由于这是一个交互式问题,在输出每一行后,请务必输出换行符并刷新输出缓冲区。

样例

输入 1

1
9 3
4 7 15
1 2
2 4
2 5
1 3
3 6
3 7
6 8
6 9
4 4
2 2
5 5
3 3
2 2
6 6
3 3
4 4
3 3
18 19 20
1
2
3
0

输出 1

-1 10 -1
-1
4 2 5 3 2 6 3 4 3
-1

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.