#loj5370. 「OOI 2023 Day 1」汽油价格
「OOI 2023 Day 1」汽油价格
[AdditionalFile5370.zip](file://AdditionalFile5370.zip?type=additional_file)
#5370. 「OOI 2023 Day 1」汽油价格
标签: 传统 | 时间限制: 3500 ms | 内存限制: 1024 MiB |
题目描述
题目译自 Open Olympiad in Informatics 2023 Day1 T2 「Цены на бензин」。
伯利兰迪亚是一个庞大的国家,包含 个城市。伯利兰迪亚的道路网络可以看作一棵有根树,总共有 条道路,从任意城市到另一城市有且仅有一条路径,且不会重复经过同一城市。为了便于描述国家结构,对于每个城市 ,固定了一个城市 ,表示从城市 前往城市 时需要首先到达的城市。换句话说,如果将树以城市 为根, 即为城市 的直接父节点。
伯利兰迪亚的每个城市都有一座加油站。这些加油站的定价方式很特别,每座加油站都有一个固定的价格范围,愿意在这个范围内销售汽油。城市 的加油站愿意以任何价格从 到 (包含边界)出售汽油。
伯利兰迪亚的国王是个模范的家庭人,在 年内,他每年都会有两个儿子出生。国王的孩子从小就参与国家事务,每年年底他们会检查汽油价格的公平性。从出生开始,在第 年出生的国王孩子分别负责检查从城市 到城市 和从城市 到城市 的路径上的汽油价格。
检查过程如下:两个孩子同时分别从城市 和 开始他们的旅程。第 年出生的第一个儿子沿着从城市 到城市 的路径前进,第二个儿子沿着从城市 到城市 的路径前进。他们会检查城市 的汽油价格是否与城市 的价格一致;接着检查从 到 路径上的第二个城市与从 到 路径上的第二个城市的汽油价格是否一致;以此类推,直到检查城市 和 的价格是否一致。保证从城市 到 的路径长度与从城市 到 的路径长度相等。
加油站必须严格遵守法律,因此所有汽油价格的检查都不能发现违规行为。请帮助伯利兰迪亚的加油站计算,在 年内他们有多少种方式可以设定汽油价格。换句话说,对于从 到 的每个 ,计算在所有加油站设定汽油价格的方式数量,使得在第 年及之前的孩子们进行检查时没有发现违规,并且每个加油站的价格都在其允许范围内。由于方式数量可能很大,请将答案对 取模。
输入格式
第一行包含一个整数 ,表示伯利兰迪亚的城市数量。
第二行包含 个整数 ,其中 表示从城市 到城市 路径上的下一个城市。
接下来的 行,每行包含两个整数 和 ,定义第 号加油站的允许价格范围。
接下来的一行包含一个整数 ,表示国王有孩子出生的年数。
接下来的 行,每行包含四个整数 ,定义第 年出生的国王孩子将检查的两个路径。保证从城市 到 的路径长度等于从城市 到 的路径长度。
输出格式
输出 行,每行一个数字。第 行的数字应等于在所有城市设定汽油价格的方式数量,使得第 年及之前出生的国王孩子在检查时未发现违规。答案请对 取模。
样例 1
输入
5
1 1 2 2
2 4
1 3
1 3
2 4
4 4
4
1 1 2 2
1 2 2 1
3 4 4 3
3 4 3 5
输出
18
18
4
0
以第一个样例为例:
在第一对儿子出生后,城市 和 的价格必须相等。共有 种方式为城市 和 选择相同的汽油价格,使其在各自的允许范围内。因此,设定汽油价格的总方式数为 。
第二对儿子将检查路径 和 。这意味着城市 和 的汽油价格必须一致,而这一条件已经满足。因此,在第二对儿子出生后,答案没有变化。
第三对儿子将检查路径 和 。这意味着城市 的汽油价格必须与城市 的价格相等,且城市 的价格必须与城市 的价格相等。城市 和 的价格已经是相同的。对于城市 和 ,有 种方式选择相同的汽油价格,使其在各自的允许范围内。因此,设定汽油价格的总方式数为 。
第四对儿子将检查路径 和 。这意味着城市 和 的价格必须相等,并且由于城市 和 的价格已经一致,城市 、 和 的汽油价格必须相同。城市 的汽油价格必须不大于 ,而城市 的汽油价格必须不小于 。因此,在第四对儿子出生后,不存在任何方式可以设定汽油价格,使得所有检查条件满足且价格在允许范围内。
样例 2
输入
8
1 2 3 4 5 8 6
3 7
2 6
3 8
5 10
5 8
2 9
3 8
6 8
4
1 3 7 6
4 1 5 7
1 7 7 1
1 8 2 7
输出
720
120
120
1
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务 | 分值 | 附加限制 | 子任务依赖 | 备注 |
|---|---|---|---|---|
| , | ||||
| , | ||||
| 所有检查路径的总长度不超过 | ||||
| , | ||||
| , | ||||