HEOI2024 题目转存

赛时测试数据下载

wind

xor

wormhole

maze

timeline

sleep

题解参考

[省选联考 2024] 季风

题目背景

生活在二维平面的小 X 准备拜访小 Y,但由于气候的变化,平面上刮起了季风。小 X 想知道季风的影响下,TA 至少要多少天能够到达小 Y 的家,但小 X 也是第一次遇见这种怪事,所以请精通算法的你来帮忙。

题目描述

给定 \(n,k,x,y\)\(2n\) 个整数 \(x_0,y_0,x_1,y_1,\dots,x_{n-1},y_{n-1}\)

找到最小的非负整数 \(m\),使得存在 \(2m\) 个实数 \(x_0',y_0',x_1',y_1',\dots,x_{m-1}',y_{m-1}'\) 满足以下条件,或报告不存在这样的 \(m\)

  • \(\sum \limits_{i=0}^{m-1} (x_i'+x_{i \bmod n})=x\)
  • \(\sum \limits_{i=0}^{m-1} (y_i'+y_{i \bmod n})=y\)
  • \(\forall 0\leq i\leq m-1,|x_i'|+|y_i'|\leq k\)

特别地,\(m=0\) 时,认为 \(\sum \limits_{i=0}^{m-1} (x_i'+x_{i \bmod n})\)\(\sum \limits_{i=0}^{m-1} (y_i'+y_{i \bmod n})\) 均为 \(0\)

输入格式

本题有多组测试数据。输入的第一行一个整数 \(T\) 表示测试数据组数。

对于每组测试数据,

  • 第一行四个整数 \(n,k,x,y\)
  • 接下来 \(n\) 行,第 \(i\) 行两个整数 \(x_{i-1},y_{i-1}\)

输出格式

对于每组测试数据输出一行一个整数,如果存在满足题意的 \(m\),输出其最小可能值,否则输出 \(-1\)

样例 #1

样例输入 #1

4
1 2 2 2
1 1
1 2 -2 -2
1 1
1 2 0 0
1 1
2 100000000 100000000 100000000
-99999999 0
-100000000 0

样例输出 #1

1
-1
0
399999999

提示

【样例 1 解释】

该组样例共有四组测试数据。

  • 对于第一组测试数据,取 \(m=1\)\((x_0',y_0')=(1,1)\) 满足条件,可以证明不存在更小的 \(m\) 满足条件;
  • 对于第二组测试数据,可以证明不存在任何非负整数 \(m\) 满足条件;
  • 对于第三组测试数据,取 \(m=0\) 满足条件,可以证明不存在更小的 \(m\) 满足条件。

【样例 2】

见附件中的 wind2.in/ans

该组样例共有八十组测试数据,所有测试数据均满足 \(n=1\),其中测试数据 \(1\sim 20\) 满足特殊性质 A,\(21\sim 40\) 满足特殊性质 B,\(41\sim 60\) 满足特殊性质 C。

【样例 3】

见附件中的 wind3.in/ans

该组样例共有六十组测试数据,所有测试数据均满足 \(n=200\),其中测试数据 \(1\sim 20\) 满足特殊性质 A,\(21\sim 40\) 满足特殊性质 B。

【子任务】

\(\sum n\) 为单个测试点内所有测试数据 \(n\) 的和。对于所有测试数据:

  • \(1\leq T\leq 5\times 10^4\)
  • \(1\leq n\leq 10^5\)\(1\leq \sum n \leq 10^6\)
  • \(0\leq |x|,|y|,|x_i|,|y_i|,k\leq 10^8\)
测试点编号 \(n\leq\) \(\sum n\leq\) 特殊性质
\(1\) \(1\) \(300\) A
\(2\) \(1\) \(300\) B
\(3\) \(1\) \(300\) C
\(4\) \(1\) \(300\)
\(5\) \(200\) \(5000\) A
\(6\) \(200\) \(5000\) B
\(7\) \(200\) \(5000\)
\(8\) \(10^4\) \(10^5\) A
\(9\) \(10^4\) \(10^5\) B
\(10\) \(10^5\) \(10^6\)
  • 特殊性质 A:\(\forall 0\leq i \leq n-1\)\(|x_i|+|y_i| \leq k\)
  • 特殊性质 B:\(k=0\)
  • 特殊性质 C:\(x_0=y_0=0\)

【提示】

本题输入文件较大,请使用较为快速的输入方式。

[省选联考 2024] 魔法手杖

题目描述

提示: 我们在题目描述的最后提供了一份简要的、形式化描述的题面。

C 城是一座魔力之都,以最高的魔法师水平闻名。对于一名魔法师而言,最重要的固然是魔法手杖和镶嵌在手杖上的魔法水晶。

每个魔法手杖和魔法水晶都可以用魔力值来衡量其能力大小,一个魔法手杖的魔力值是镶嵌在其上的所有魔法水晶中魔力值的最小值。

\(\omega\) 是 C 城的一名见习魔法师,他想加强他的魔法手杖。在加强之前,小 \(\omega\) 的魔法手杖镶嵌着 \(n\) 颗魔法水晶,它们的魔力值分别为 \(a_1,a_2,\dots,a_n\)

\(\omega\) 准备使用一次强力的秘术来加强他的手杖。这一次秘术中,他可以任意选择 \(x\),然后将所有魔法水晶的魔力值由 \(a_i\) 变为 \((a_i \oplus x)\),其中 \(\oplus\) 表示按位异或。由于小 \(\omega\) 能力有限,\(a_1,a_2,\dots,a_n\)\(x\) 都是 \([0,2^k-1]\) 中的整数。

\(\omega\) 还发现这个秘术可以定向加强。具体地,他可以花费 \(b_i\) 的体力值对第 \(i\) 个魔法水晶进行定向加强,将原本应变为 \((a_i \oplus x)\) 的魔力值变为 \((a_i+x)\)。小 \(\omega\) 能力有限,因此他定向加强所花费的体力值总和不能超过 \(m\),且每个水晶只能被定向加强至多一次。

\(\omega\) 想知道他在加强魔法手杖后,魔法手杖的魔力值最大能为多少,但他并不会算,所以请你来帮他计算。

形式化的: 给定 \(a_1,a_2,\dots,a_n\) 以及 \(b_1,b_2,\dots,b_n\),满足 \(a_i \in [0,2^k-1]\) 以及 \(b_i\geq 0\),你需要给出 \(S \subseteq \{1,2,\dots,n\}\) 以及 \(x \in [0,2^k-1]\) 满足以下条件:

  • \(\sum \limits_{i\in S} b_i\leq m\)
  • 满足以上条件的前提下,最大化 \(val(S,x)=\min(\min \limits_{i \in S}(a_i+x),\min \limits_{i \in U \backslash S}(a_i \oplus x))\) 的值。

你只需要给出最大的 \(val(S,x)\) 的值即可。

输入格式

本题有多组测试数据。 输入的第一行包含两个整数 \(c,T\),表示测试点编号与测试数据组数。样例中的 \(c\) 表示该样例的数据范围与第 \(c\) 个测试点的数据范围相同。

接下来依次给出每组输入数据,对于每组数据:

  • 第一行三个整数 \(n,m,k\)
  • 第二行 \(n\) 个整数 \(a_1,a_2,\dots,a_n\),分别表示每个魔法水晶的初始魔力值;
  • 第三行 \(n\) 个整数 \(b_1,b_2,\dots,b_n\),分别表示每个魔法水晶定向加强需要的体力值。

输出格式

对于每组测试数据输出一行一个整数表示小 \(\omega\) 能获得魔法手杖魔力值的最大值。

样例 #1

样例输入 #1

1 2
5 2 3
1 1 2 3 7
1 1 0 3 2
1 1 1
1
0

样例输出 #1

5
2

提示

【样例 1 解释】

  • 对于第一组数据,一种可行的方案为:定向强化魔法水晶 \(5\)(即 \(S=\{5\}\))并取 \(x=4\),最后得到的魔法水晶魔力值分别为 \(5,5,6,7,11\),故魔法手杖的魔力值为 \(5\)。可以证明不存在更优方案。
  • 对于第二组数据,一种可行的方案为:定向强化魔法水晶 \(1\)(即 \(S=\{1\}\))并取 \(x=1\)

【样例 2】

见附件中的 xor2.in/ans

该组样例满足 \(c=4\)

【样例 3】

见附件中的 xor3.in/ans

该组样例满足 \(c=7\)

【样例 4】

见附件中的 xor4.in/ans

该组样例满足 \(c=9\)

【样例 5】

见附件中的 xor5.in/ans

该组样例满足 \(c=11\)

【样例 6】

见附件中的 xor6.in/ans

该组样例满足 \(c=14\)

【样例 7】

见附件中的 xor7.in/ans

该组样例满足 \(c=22\)

【子任务】

\(\sum n\) 表示单组测试点各组数据 \(n\) 的和。对于所有测试数据,

  • \(T \geq 1\)
  • \(1 \leq n \leq 10^5\)\(1 \leq \sum n \leq 5\times 10^5\)
  • \(0 \leq m \leq 10^9\)
  • \(0 \leq k \leq 120\)
  • \(\forall 1 \leq i \leq n, 0 \leq a_i<2^k\)
  • \(\forall 1 \leq i \leq n, 0 \leq b_i \leq 10^9\)
测试点编号 \(\sum n \leq\) \(n \leq\) \(m \leq\) \(k \leq\) 特殊性质
\(1\sim 3\) \(10\) \(10\) \(10^9\) \(10\) /
\(4\sim 6\) \(5\times 10^5\) \(10^5\) \(0\) \(30\) A
\(7,8\) \(5\times 10^5\) \(2\) \(10^9\) \(30\) B
\(9,10\) \(5\times 10^5\) \(10^5\) \(10^9\) \(30\) B
\(11\sim 13\) \(5\times 10^5\) \(10^5\) \(10^9\) \(30\) C
\(14,15\) \(500\) \(10^2\) \(10^9\) \(30\) /
\(16\sim 18\) \(5\times 10^4\) \(10^4\) \(10^9\) \(60\) /
\(19\sim 21\) \(3\times 10^5\) \(10^5\) \(10^9\) \(120\) /
\(22\sim 25\) \(5\times 10^5\) \(10^5\) \(10^9\) \(120\) /
  • 特殊性质 A:\(m=0\)\(\forall 1 \leq i<n, b_i\geq 1\)
  • 特殊性质 B:\(m=1\)\(\forall 1 \leq i<n, b_i \in \{1,2\}\),且至多只有一个 \(i\) 满足 \(b_i=1\)
  • 特殊性质 C:\(m=1\)\(\forall 1 \leq i<n, b_i \in \{1,2\}\)

【提示】

本题输入文件较大,请使用较为快速的输入方式。

在评测环境中,你可以使用 \(128\) 位有符号整数类型 __int128,它可以存储范围在 \([-2^{127},2^{127}-1]\) 内的整数,使用方法与其他整型类型基本一致。

需要注意,此类型无法使用诸如 cin/coutscanf/printf 等常规输入输出方式进行输入输出。我们在选手目录下提供了一份 __int128 的输入输出函数实现供选手选择使用。

[省选联考 2024] 虫洞

题目描述

E 国有 \(n\) 个城市,编号为 \(1\)\(n\)。为了让城市之间的来往更加便利,E 国的交通部想在 \(n\) 个城市间建造一些虫洞。每条虫洞是一条单向的从某个城市到另一个城市的通道。允许通道的起点和终点是同一个城市,也允许两个城市之间有多个虫洞连接。

为了区分虫洞的建造时间,交通部给每一条虫洞一个正整数的编号。

我们称一种虫洞的建造方案是好的,若它满足如下四个条件:

  1. 存在一个非负整数 \(d\) 使得每个城市恰好是 \(d\) 条虫洞的起点,也恰好是 \(d\) 条虫洞的终点。
  2. 对于每个城市而言,在以它为起点的虫洞的编号中,\(1\)\(d\) 恰好各出现一次。
  3. 对于每个城市而言,在以它为终点的虫洞的编号中,\(1\)\(d\) 恰好各出现一次。
  4. 任意选取一个城市 \(u\) 和正整数 \(1\le j_1, j_2 \le d\)。设从 \(u\) 出发,先经过一次编号为 \(j_1\) 的虫洞,再经过一次编号为 \(j_2\) 的虫洞,到达城市 \(v_1\)。设从 \(u\) 出发,先经过一次编号为 \(j_2\) 的虫洞,再经过一次编号为 \(j_1\) 的虫洞,到达城市 \(v_2\)。则条件 \(v_1=v_2\) 必定满足。

特别地,不建造任何虫洞的方案也是好的。

现在,建造师已建造了 \(mn\) 条虫洞,且给了它们 \(1\sim m\) 的编号,此时这样的建造方案是好的。他想要新建造 \(kn\) 条虫洞,并给它们 \((m+1)\sim (m+k)\) 的编号。他必须保证这 \((m + k)n\) 条虫洞形成的建造方案仍然是好的。他想知道有多少种新建造 \(kn\) 条虫洞的方法,使得这 \((m + k)n\) 条虫洞形成的建造方案是好的。

由于答案很大,你只需要求出方案数除以 \(998244353\) 的余数。

输入格式

输入的第一行四个非负整数 \(c, n, m, k\),其中 \(c\) 表示测试点编号。样例中的 \(c\) 表示该样例的数据范围与第 \(c\) 个测试点的数据范围相同。

接下来 \(nm\) 行,每行三个正整数 \(u,v,w\),表示一条编号为 \(w\) 的,起点为 \(u\) 号城市,终点为 \(v\) 号城市的虫洞。

输出格式

输出一行整数,表示方案数除以 \(998244353\) 的余数。

样例 #1

样例输入 #1

1 4 1 1
1 2 1
2 1 1
3 4 1
4 3 1

样例输出 #1

8

提示

【样例 1 解释】

在该组样例中,已经建造的编号为 \(1\) 的虫洞为 \(1\to 2,2\to 1,3\to 4,4\to 3\)。为了使 \(8\) 条虫洞形成的建造方案是好的,新建造的编号为 \(2\) 的虫洞可能有 \(8\) 种情形:

  1. \(1\to 1, 2\to 2, 3\to 3, 4\to 4\)
  2. \(1\to 1, 2\to 2, 3\to 4, 4\to 3\)
  3. \(1\to 2, 2\to 1, 3\to 3, 4\to 4\)
  4. \(1\to 2, 2\to 1, 3\to 4, 4\to 3\)
  5. \(1\to 3, 2\to 4, 3\to 1, 4\to 2\)
  6. \(1\to 3, 2\to 4, 3\to 2, 4\to 1\)
  7. \(1\to 4, 2\to 3, 3\to 1, 4\to 2\)
  8. \(1\to 4, 2\to 3, 3\to 2, 4\to 1\)

【样例 2】

见附件中的 wormhole2.in/ans

该样例的 \(c = 2\),它满足第 2 个测试点的限制条件。

【样例 3】

见附件中的 wormhole3.in/ans

该样例的 \(c = 5\),它满足第 5 个测试点的限制条件。

【样例 4】

见附件中的 wormhole4.in/ans

该样例的 \(c = 7\),它满足第 7 个测试点的限制条件。

【样例 5】

见附件中的 wormhole5.in/ans

该样例的 \(c = 9\),它满足第 9 个测试点的限制条件。

【样例 6】

见附件中的 wormhole6.in/ans

该样例的 \(c = 11\),它满足第 11 个测试点的限制条件。

【样例 7】

见附件中的 wormhole7.in/ans

该样例的 \(c = 15\),它满足第 15 个测试点的限制条件。

【样例 8】

见附件中的 wormhole8.in/ans

该样例的 \(c = 17\),它满足第 17 个测试点的限制条件。

【样例 9】

见附件中的 wormhole9.in/ans

该样例的 \(c = 20\),它满足第 20 个测试点的限制条件。

【样例 10】

见附件中的 wormhole10.in/ans

该样例的 \(c = 22\),它满足第 22 个测试点的限制条件。

【子任务】

对于所有测试点,

  • \(1\le n \le 2\cdot 10^3\)\(0 \le m \le 10^3\)\(1 \le k \le 10^{15}\)
  • \(1 \le u,v \le n\)\(1 \le w \le m\)
  • 保证初始建造的 \(mn\) 条虫洞构成一个号的建造方案。
测试点编号 \(n\) \(m\) \(k\)
\(1\sim 4\) \(\le 5\) \(\le 3\) $ \le 3$
\(5\sim 6\) \(\le 2\cdot 10^3\) \(=0\) \(=1\)
\(7\sim 8\) \(\le 10^2\) \(=1\) \(=1\)
\(9\sim 10\) \(\le 10^2\) \(\le 10\) \(=1\)
\(11\sim 14\) \(\le 10^2\) \(\le 10\) \(\le 10^3\)
\(15\sim 16\) \(\le 10^2\) \(=0\) \(\le 10^{15}\)
\(17\sim 19\) \(\le 10^2\) \(\le 10\) \(\le 10^{15}\)
\(20\sim 21\) \(\le 2\cdot 10^3\) \(\le 10^3\) \(\le 10^2\)
\(22\sim 25\) \(\le 2\cdot 10^3\) \(\le 10^3\) \(\le 10^{15}\)

【提示】

本题部分测试点输入规模较大,我们推荐你使用较为快速的读入方式。

[省选联考 2024] 迷宫守卫

题目描述

Alice 拥有一座迷宫,这座迷宫可以抽象成一棵拥有 \(2^n\) 个叶节点的满二叉树,总节点数目为 \((2^{n+1} − 1)\),依次编号为 \(1 \sim (2^{n+1} − 1)\)。其中编号为 \(2^n \sim (2^{n+1} − 1)\) 的是叶节点,编号为 \(1 \sim (2^n − 1)\) 的是非叶节点,且非叶节点 \(1 \le u \le (2^n − 1)\) 的左儿子编号为 \(2u\),右儿子编号为 \((2u + 1)\)

每个非叶节点都有一个石像守卫,初始时,所有石像守卫均在沉睡。唤醒 \(u\) 点的石像守卫需要 \(w_u\) 的魔力值。

每个叶节点都有一个符文,\(v\) 点的符文记作 \(q_v\)保证\(q_{2^n}, q_{2^n+1},\cdots, q_{2^{n+1}−1}\) 构成 \(1 \sim 2^n\) 的排列

探险者初始时持有空序列 \(Q\),从节点 \(1\) 出发,按照如下规则行动:

  • 到达叶节点 \(v\) 时,将 \(v\) 点的符文 \(q_v\) 添加到序列 \(Q\) 的末尾,然后返回父节点。
  • 到达非叶节点 \(u\) 时:
    • 若该点的石像守卫已被唤醒,则只能先前往左儿子,(从左儿子返回后)再前往右儿子,(从右儿子返回后)最后返回父节点。
    • 若该点的石像守卫在沉睡,可以在以下二者中任选其一:
      • 先前往左儿子,再前往右儿子,最后返回父节点。
      • 先前往右儿子,再前往左儿子,最后返回父节点。

返回节点 \(1\) 时,探险结束。可以证明,探险者一定访问每个叶节点各一次,故此时 \(Q\) 的长度为 \(2^n\)

探险者 Bob 准备进入迷宫,他希望探险结束时的 \(Q\) 的字典序越小越好,与之相对,Alice 希望 \(Q\) 的字典序越大越好。

在Bob 出发之前,Alice 可以选择一些魔力值花费之和不超过 \(K\) 的石像守卫,并唤醒它们。Bob 出发时,他能够知道 Alice 唤醒了哪些神像。若双方都采取最优策略,求
序列 \(Q\) 的最终取值。

对于两个长度为 \(2^n\) 的序列 \(Q_1,Q_2\),称 \(Q_1\) 字典序小于 \(Q_2\) 当且仅当以下条件成立:

  • \(\exist i \in [1, 2n]\) 满足以下两个条件:
    • \(\forall 1 \le j < i,Q_{1,j} = Q_{2,j}\)
    • \(Q_{1,i} < Q_{2,i}\)

输入格式

本题有多组测试数据。输入的第一行包含一个正整数 \(T\),表示测试数据组数。

接下来依次 \(T\) 组测试数据。对于每组测试数据:

  • 第一行两个整数 \(n,K\) 表示迷宫规模和 Alice 可用于唤醒石像守卫的魔力值上限。
  • 第二行 \((2^n − 1)\) 个整数 \(w_1,w_2,\cdots,w_{2^n−1}\) 表示唤醒各个石像守卫耗费的魔力值。
  • 第三行 \(2^n\) 个整数 \(q_{2^n}, q_{2^n+1},\cdots, q_{2^{n+1}−1}\) 表示各个叶节点上的符文。

输出格式

对于每组数据,输出一行 \(2^n\) 个整数 \(Q_1,Q_2,\cdots,Q_{2^n}\),表示双方都采取最优策略的情况下,序列 \(Q\) 的最终取值。

样例 #1

样例输入 #1

3
1 0
1
2 1
1 1
1
2 1
3 3
3 2 1 2 1 2 1
4 2 6 3 7 1 5 8

样例输出 #1

1 2
2 1
2 4 6 3 5 8 7 1

提示

【样例 1 解释】

  • 第一组数据中,Alice 无法唤醒石像守卫,Bob 可以选择先访问叶节点 \(3\),再访问叶节点 \(2\),得 \(Q = \{1, 2\}\)
  • 第二组数据中,Alice 可以唤醒节点 \(1\) 的石像守卫,Bob 只能先访问叶节点 \(2\),再访问叶节点 \(3\),得 \(Q = \{2, 1\}\)
  • 第三组数据中,Alice 的最优策略是唤醒节点 \(5, 6\) 的石像守卫。

【样例 2】

见附件中的 maze2.in/ans

该组数据满足特殊性质 A。

【样例 3】

见附件中的 maze3.in/ans

该组数据满足特殊性质 B。

【样例 4】

见附件中的 maze4.in/ans

【样例 5】

见附件中的 maze5.in/ans

【子任务】

\(\sum 2^n\) 表示单个测试点钟所有测试数据的 \(2^n\) 的和。对于所有测试数据,保证

  • \(1\le T \le 100\)
  • \(1\le n \le 16\)\(1 \le \sum 2^n \le 10^5\)
  • \(0\le K \le 10^{12}\)
  • \(\forall 1 \le u \le (2^n-1)\)\(0 \le w_u \le 10^{12}\)
  • \(q_{2^n},q_{2^n+1},\cdots,q_{2^{n+1}-1}\) 构成 \(1\sim 2^n\) 的排列。
测试点编号 \(n\le\) \(\sum 2^n \le\) 特殊性质
\(1\sim 5\) \(4\) \(80\)
\(6\) \(6\) \(200\) A
\(7\sim 8\) \(6\) \(200\) B
\(9\sim 10\) \(6\) \(200\)
\(11\) \(11\) \(4000\) A
\(12\sim 13\) \(11\) \(4000\) B
\(14\sim 15\) \(11\) \(4000\)
\(16\) \(16\) \(10^5\) A
\(17\sim 18\) \(16\) \(10^5\) B
\(19\sim 20\) \(16\) \(10^5\)

特殊性质 A:\(\forall 2^n \le v \le (2^{n+1}-1)\)\(q_v = (2^{n+1}-v)\)

特殊性质 B:\(\forall 1 \le u \le (2^n-1)\)\(w_u = 1\)

[省选联考 2024] 重塑时光

题目描述

小 T 正在研究某段时间中所发生的事件。经观测,有 \(n\) 个编号为 \(1\sim n\) 的事件在这段时间内按顺序依次发生,第 \(i\) 个发生的是事件 \(p_i\)。这个描述事件发生顺序的排列 \(p\) 可称为这段时间的时间线

突然,邪恶生物小 S 攻击了这条时间线,将这 \(n\) 个事件的发生顺序 \(p\) 变为了在所有长为 \(n\) 的排列中等概率随机选取的一个排列。不仅如此,小 S 还用剪刀把时间线剪断,通过进行 \(k\) 次操作,将排列 \(p\) 分割成了 \((k + 1)\) 段。

具体而言,在小 S 进行第 \(i\) 次操作时,排列 \(p\) 和之前所有插入的剪断点构成了一个长度为 \((n + i − 1)\) 的序列。该序列包括所有相邻元素之间和序列开头、末尾处共有 \((n + i)\) 个插入位置。小 S 将从这些插入位置中等概率随机选取一个位置,插入一个新的剪断点。最后,小 S 从最终被插入的 \(k\) 个剪断点处把序列剪开,将排列 \(p\) 分割成了 \((k + 1)\) 段序列。这 \((k + 1)\) 段序列中可能有空序列。

为了拯救这条即将毁灭的时间线,小 T 决定把这 \((k + 1)\) 段序列按某种顺序重新拼接成一个长度为 \(n\) 的排列,形成一条新的时间线。不过,由于事件之间存在一定的逻辑关系,事件的发生时间之间也存在一些先后顺序要求。经研究,共存在 \(m\) 条先后顺序要求 \((u, v)\),要求事件 \(u\) 的发生时间必须在事件v 之前。也就是说,\(u\) 在时间线中的出现位置必须在 \(v\) 之前。

请你设计程序,计算有多大的概率,存在至少一种重新排列这 \((k + 1)\) 段序列,并将其重新拼接为一条新的时间线的方案,能够使所有的 \(m\) 条事件发生时间之间的先后顺序要求都得到满足。

为了避免精度误差,请你输出答案对 \(10^9 +7\) 取模的结果。形式化地,可以证明答案可被表示为一最简分数 \(\frac{p}{q}\),请你输出一个 \(x\) 满足 \(0 \le x < 10^9+7\)\(qx \equiv p \pmod {10^9+7}\)。可以证明在题目条件下这样的 \(x\) 总是存在。

输入格式

第一行三个整数 \(n, m, k\),分别描述事件的个数,事件之间先后顺序的条数以及小 S 进行的剪断操作次数。

接下来 \(m\) 行,每行两个整数 \(u, v\),表示一条事件发生时间的先后顺序要求。

输出格式

输出一行一个整数,表示所求答案。

样例 #1

样例输入 #1

2 1 1
1 2

样例输出 #1

666666672

样例 #2

样例输入 #2

3 0 2

样例输出 #2

1

样例 #3

样例输入 #3

4 4 4
1 2
1 3
1 4
2 4

样例输出 #3

937500007

提示

【样例 1 解释】

假如事件 \(1\) 的发生时间早于事件 \(2\),那么无论怎样拼接都是可行方案,一定可以满足要求。否则,只有剪断时间线的位置位于事件 \(1\) 和事件 \(2\) 的发生时间之间,才能满足要求。答案为 \(\frac{1}{2}+\frac{1}{2}\times \frac{1}{3}=\frac{2}{3}\)

【样例 2 解释】

没有任何事件发生时间之间的先后顺序要求,因此无论怎样拼接都是可行的方案,答案为 \(1\)

【样例 4】

见附件中的 timeline4.in/ans

【样例 5】

见附件中的 timeline5.in/ans

该组样例满足数据范围中的特殊性质 B。

【样例 6】

见附件中的 timeline6.in/ans

该组样例满足数据范围中的特殊性质 A。

【样例 7】

见附件中的 timeline7.in/ans

【子任务】

对于所有测试数据,

  • \(1 \le n \le 15\)
  • \(0 \le m \le \frac{n(n-1)}{2}\)\(0 \le k \le n\)
  • \(1 \le u < v \le n\),保证不存在两对 \((u,v)\) 完全相同。
测试点 \(n\) \(m\) \(k\) 特殊性质
\(1\) \(\le 3\) \(=n-1\) \(=0\) B
\(2\) \(\le 5\) \(\le \frac{n(n-1)}{2}\) \(\le n\)
\(3,4\) \(\le 14\) \(=n-1\) \(\le n\) B
\(5\) \(\le 14\) \(=n-1\) \(=0\) A
\(6\) \(\le 14\) \(=n-1\) \(\le n\) A
\(7\) \(\le 14\) \(=0\) \(\le n\)
\(8\) \(\le 14\) \(=\frac{n(n-1)}{2}\) \(\le n\)
\(9,10\) \(\le 9\) \(\le 15\) \(\le n\)
\(11\) \(\le 13\) \(\le \frac{n(n-1)}{2}\) \(=0\)
\(12\) \(\le 13\) \(\le \frac{n(n-1)}{2}\) \(\le n\)
\(13 \sim 17\) \(\le 14\) \(\le \frac{n(n-1)}{2}\) \(\le n\)
\(18\sim 20\) \(\le 15\) \(\le \frac{n(n-1)}{2}\) \(\le n\)

特殊性质 A:对于每个事件 \(x\),至多存在一条先后顺序 \((u, v)\) 使得 \(v = x\)

特殊性质 B:对于所有先后顺序 \((u, v)\),均满足 \(u = 1\)

[省选联考 2024] 最长待机

题目描述

精灵程序员小 \(\omega\) 和 小 \(\aleph\) 拥有无限的寿命,因此在写代码之余,它们经常玩一些对抗游戏来打发时间。尽管如此,时间还是太多,于是它们发明了一款专用于消磨时间的游戏:最长待机。

为了了解最长待机的规则,首先要了解精灵们使用的编程语言 Sleep++ 的规则:

  • 程序由 \(n\) 个函数组成,第 \(i(1 \le i\le n)\) 个函数具有种类 \(e_i\) 和子函数编号序列 \(Q_i = (Q_{i,1},Q_{i,2},\cdots,Q_{i,l_i})\)\(Q_i\) 可以为空,此时 \(l_i\)\(0\)

  • \(n\) 以及所有的 \(e_i\)\(Q_i\) 可以由程序员任意给出,但它们需要满足以下所有条件:

    • \(n\ge 1\)
    • \(\forall 1 \le i \le n\)\(e_i \in \{0, 1\}\)
    • \(\forall 1 \le i \le n\)\(Q_i\) 中元素两两不同且均为 \([i + 1, n]\) 中的整数;
    • \(\forall 2 \le j \le n\)恰好有一个 \(Q_i(1 \le i \le n)\) 包含了 \(j\)
  • 调用函数 \(i(1 \le i \le n)\) 时,按顺序执行如下操作:

    • \(e_i = 0\),令变量 \(r_i\)\(1\);否则程序员需要立即为 \(r_i\) 输入一个正整数值
    • \(Q_i\) 为空,程序等待 \(r_i\) 秒;否则重复以下操作 \(r_i\) 次:
      • 按顺序调用编号为 \(Q_{i,1},Q_{i,2},\cdots,Q_{i,l_i}\) 的函数。
  • 若一个种类为 \(1\) 的函数 \(j\) 被调用多次,则其每次调用都需要输入 \(r_j\)

  • 我们认为,在函数调用中,除了“等待 \(r\) 秒”之外的操作不消耗任何时间,即函数调用、运行和输入都在瞬间完成。因此,一个时刻内程序员可能输入多个数。

可以证明,调用任意一个 Sleep++ 程序的任意一个函数,无论如何设定输入,消耗的时间总是有限的。

“最长待机”的游戏规则如下:

  • \(\omega\) 和 小 \(\aleph\) 准备好各自的 Sleep++ 程序并选择各自程序中的一个函数。它们互相知晓对方程序的结构以及选择的函数。

  • 在时刻 \(0\),小 \(\omega\) 和 小 \(\aleph\) 同时调用自己选择的函数,游戏开始。

  • 在时刻 \(t\)\(t \ge 0\)),双方可以看到对方在时刻 \(0\)\((t − 1)\) 输入的所有数字,并相应调整自己在时刻 \(t\) 输入的数字,但双方无法得知对方在时刻 \(t\) 输入的数字。

  • 函数调用先结束的一方输掉游戏,另一方胜利。两个调用同时结束算作平局。

\(\omega\) 和 小 \(\aleph\) 都是绝顶聪明的,在它们眼中,如果有一方存在必胜策略,那么这局游戏是不公平的。换言之,双方都不存在必胜策略的游戏是公平的。

\(\omega\) 写了一个 \(n\) 个函数的 Sleep++ 程序并进行了 \(m\) 次操作,操作有以下两种:

  • 操作一:给出 \(k\),将 \(e_k\) 修改为 \((1 − e_k)\)
  • 操作二:给出 \(k\),与小 \(\aleph\) 玩一局“最长待机”,开始时小 \(\omega\) 会调用自己的函数 \(k\)

\(\aleph\) 信奉极简主义,它希望对于每一局游戏设计出函数个数最少的程序,使得选择其中某个函数能让这局游戏是公平的。你能帮它求出最少所需的函数个数吗?

可以证明,小 \(\aleph\) 总是能设计一个程序并选择其中一个函数,使得游戏是公平的。

输入格式

输入的第一行包含两个正整数 \(n,m\),表示小 \(\omega\) 的程序中函数的个数以及操作次数。

接下来 \(n\) 行,第 \(i\) 行若干个整数,描述小 \(\omega\) 程序中的函数 \(i\)

  • 前两个整数 \(e_i, l_i\) 表示函数种类和子函数编号序列长度;
  • 接下来 \(l_i\) 个整数 \(Q_{i,1},Q_{i,2},\cdots,Q_{i,l_i}\) 描述子函数编号序列。

接下来 \(m\) 行,第 \(j\) 行两个整数 \(o_j, k_j\) 描述一次操作,其中 \(o_j = 1\) 表示操作一,\(o_j = 2\) 表示操作二。

输出格式

对于每个操作二输出一行一个整数,表示小 \(\aleph\) 的程序中最少所需的函数个数。

样例 #1

样例输入 #1

3 6
0 2 2 3
0 0
0 0
2 1
1 3
2 1
1 3
1 2
2 1

样例输出 #1

3
3
1

提示

【样例 1 解释】

  • 对于前两次游戏,小 \(\aleph\) 可以给出与小 \(\omega\) 完全一致的程序并在游戏开始时调用函数 \(1\)。可以证明不存在函数个数更少的方案。

  • 对于第三次游戏,小 \(\aleph\) 可以给出一个仅包含一个种类为 \(1\) 的函数的程序,并在游戏开始时调用函数 \(1\)

    • 在时刻 \(0\),小 \(\omega\) 输入其程序中的 \(r_2\),小 \(\aleph\) 输入其程序中的 \(r_1\)
      • 注意:\(r\) 变量在小 \(\omega\) 和小 \(\aleph\) 的程序之间是独立的,不会互相影响。
    • 输入完成后,小 \(\omega\) 的程序在时刻 \((r_2 +1)\) 结束,小 \(\aleph\) 的程序在时刻 \(r_1\) 结束。
    • 由于两人在时刻 \(0\) 互不知道对方的决策,不能保证 \((r_2 + 1)\)\(r_1\) 的大小关系,故双方均不存在必胜策略,这局游戏是公平的。

【样例 2】

见附件中的 sleep2.in/ans

该组数据满足特殊性质 AD。

【样例 3】

见附件中的 sleep3.in/ans

该组数据满足特殊性质 BD。

【样例 4】

见附件中的 sleep4.in/ans

该组数据满足特殊性质 D。

【样例 5】

见附件中的 sleep5.in/ans

该组数据满足特殊性质 C。

【子任务】

对于所有测试数据,

  • \(1 \le n \le 5\times 10^5\)\(1 \le m \le 2\times 10^5\)
  • \(\forall 1 \le i \le n\)\(e_i\in \{0, 1\}\)\(0 \le l_i <n\)
  • \(\forall 1 \le i \le n,1 \le j \le l_i\)\(i < Q_{i,j} \le n\)
  • \(\forall 1 \le i \le n, 1 \le p < q \le l_i\)\(Q_{i,p}\neq Q_{i,q}\)
  • \(\forall 2 \le j \le n\),恰好有一个 \(Q_i(1 \le i \le n)\) 包含了 \(j\)
  • \(\forall 1 \le j \le m\)\(1 \le o_j \le 2\)\(1 \le k_j \le n\)
测试点编号 $n \le $ $m\le $ 特殊性质
\(1\sim 2\) \(3\) \(24\)
\(3\) \(80\) \(400\) AD
\(4\) \(80\) \(400\) BD
\(5\sim 6\) \(80\) \(400\) D
\(7\) \(3\times 10^5\) \(10^5\) AD
\(8\) \(3\times 10^5\) \(10^5\) BD
\(9\sim 10\) \(3\times 10^5\) \(10^5\) D
\(11\) \(3\times 10^5\) \(10^5\) A
\(12\) \(3\times 10^5\) \(10^5\) BC
\(13\) \(3\times 10^5\) \(10^5\) B
\(14\sim 15\) \(3\times 10^5\) \(10^5\) C
\(16\sim 17\) \(3\times 10^5\) \(10^5\)
\(18\sim 19\) \(5\times 10^5\) \(2\times 10^5\) A
\(20\) \(5\times 10^5\) \(2\times 10^5\) BC
\(21\) \(5\times 10^5\) \(2\times 10^5\) B
\(22\sim 23\) \(5\times 10^5\) \(2\times 10^5\) C
\(24\sim 25\) \(5\times 10^5\) \(2\times 10^5\)
posted @ 2024-03-05 21:45  HaneDaniko  阅读(148)  评论(0编辑  收藏  举报
/**/