QOJ.ac

QOJ

Límite de tiempo: 5.0 s Límite de memoria: 256 MB Puntuación total: 100 Hackeable ✓

#9169. -is-this-bitset-

Estadísticas

请注意内存限制!

给定一棵包含 $n$ 个节点的二叉树,根节点为 1。这意味着每个节点最多有两个子节点。同时给定两个包含 $n$ 个整数的数组 $a$ 和 $b$。

对于节点 $i$,子集和问题定义为:能否从节点 $i$ 的祖先(包含节点 $i$ 本身)中选取一个子集 $S$,使得 $\sum_{j \in S} a_j = b_i$。

你可以对数组 $a$ 进行最多 5000 次操作。每次操作中,你可以选择两个整数 $i$ 和 $x$($1 \le i \le n$,$0 \le x \le 2 \cdot 10^6$),并将 $a_i$ 修改为 $x$。

在进行这些操作后,请解决每个节点 $i$ 的子集和问题,并以位串形式输出结果。

输入格式

第一行包含一个整数 $n$($1 \le n \le 300\,000$)——二叉树的大小。接下来的 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n, u \neq v$)——表示节点 $u$ 和 $v$ 之间有一条边。 保证这些边构成一棵以节点 1 为根的二叉树。 下一行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 2 \cdot 10^6$)——数组 $a$。 最后一行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($0 \le b_i \le 2 \cdot 10^6$)——数组 $b$。

输出格式

输出 $n$ 个整数 $a'_1, a'_2, \dots, a'_n$($0 \le a'_i \le 2 \cdot 10^6$)——即操作完成后的新数组 $a'$。 在下一行,输出一个长度为 $n$ 的位串。如果节点 $i$ 的子集和问题有解,则第 $i$ 位为 1,否则为 0。

样例

样例输入 1

5
2 1
1 3
3 4
5 4
1 3 11 12 6
0 5 12 13 18

样例输出 1

1 3 11 12 0
10110

样例输入 2

1
2000000
2000000

样例输出 2

2000000
1

说明

在样例输出中,我们将数组 $a$ 的最后一个数字修改为了 0。

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.