模拟三

T1 分流塔

时间限制:1500ms
空间限制:256MiB

题目描述

有一棵以结点 \(1\) 为根的有根二叉树。

也即:每个结点要么没有儿子,要么恰有两个有序儿子,分别称为左儿子和右儿子。没有儿子的结点称为叶子,根结点的深度为 \(0\)。

每个内部结点预先指定了一个优先儿子。当 \(x\) 个小球到达一个内部结点时,该结点会把

\[\left\lceil\frac{x}{2}\right\rceil \]

个小球送入优先儿子,把

\[\left\lfloor\frac{x}{2}\right\rfloor \]

个小球送入另一个儿子。所有小球不断向下分流,直至到达叶子。

在投入小球之前,你可以选择至多 \(K\) 个内部结点,将这些结点的优先儿子由左改为右,或由右改为左。每个结点至多被选择一次。

每个叶子 \(i\) 有一个非负整数需求 \(b_i\),要求叶子 \(i\) 最终收到至少 \(b_i\) 个小球。

求至少需要从根结点投入多少个小球,才能通过翻转至多 \(K\) 个结点满足所有叶子的需求。

输入格式

第一行包含两个整数 \(n,K\),分别表示结点数和最多可以翻转的结点数。

接下来 \(n\) 行,第 \(i\) 行包含四个整数

\[l_i\quad r_i\quad p_i\quad b_i. \]

  • 若结点 \(i\) 是内部结点,则 \(l_i,r_i\) 分别为它的左、右儿子,\(p_i\in\{0,1\}\):
    • \(p_i=0\) 表示左儿子是优先儿子;
    • \(p_i=1\) 表示右儿子是优先儿子。
      此时保证 \(b_i=0\)。
  • 若结点 \(i\) 是叶子,则 \(l_i=r_i=p_i=0\),\(b_i\) 为该叶子的需求。

输入保证 \(1\) 为根,且每个内部结点的两个儿子编号均大于它自身的编号。

输出格式

输出一个非负整数,表示根结点至少需要投入的小球数。

答案可能超过 64 位整数范围。

输入样例

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

输出样例

7

说明/提示

样例 1 解释

投入 \(7\) 个小球时,根结点的左右子树分别收到 \(4,3\) 个小球。

翻转结点 \(5\) 后,四个叶子从左到右分别收到 \(2,2,1,2\) 个小球,恰好满足全部需求。

所有叶子的需求之和为 \(7\),因此投入少于 \(7\) 个小球一定不可能满足要求。

子任务与数据范围

本题共 \(50\) 个测试点,每个测试点 \(2\) 分。

称一棵树为梳状树,当且仅当每个内部结点至多有一个儿子是内部结点。

子任务 测试点 测试点数 分值 特殊性质
1 \(1\sim5\) 5 10 \(n\le15\)
2 \(6\sim10\) 5 10 \(n\le60\)
3 \(11\sim15\) 5 10 树是一棵梳状树
4 \(16\sim20\) 5 10 树是一棵完全二叉树,所有叶子深度相同
5 \(21\sim50\) 30 60 无特殊性质

对于 \(100\%\) 的数据:

\[1\le n\le 2\times 10^5, \]

\[0\le K\le \text{内部结点数}, \]

\[0\le b_i\le 10^{18}, \]

树的最大深度不超过 \(60\)。

T2 三人委员会

时间限制:4000ms
空间限制:512MiB

题目背景

某组织采用递归委员会制度。每个基层席位产生一名代表,每个上级委员会由三个下级委员会组成,并从三名下级代表中选择意见居中的一人,作为本委员会的代表。

在正式报名尚未结束时,尚未报名的席位会由意见任意的匿名临时代表补充。你需要判断,在不同的报名阶段中,哪些正式报名者可能最终成为最高委员会的代表。

题目描述

给定一棵高度为 \(K\) 的满三叉树,根节点的深度为 \(0\),每个非叶节点恰有三个从左到右排列的儿子,所有叶节点的深度均为 \(K\)。

因此叶节点数量为 \(N=3^K\),叶节点从左到右编号为 \(1,2,\ldots,N\),第 \(i\) 个叶节点对应第 \(i\) 名正式报名者。

第 \(i\) 名报名者具有:一个整数意见区间 \([l_i,r_i]\) 和一个非负整数权值 \(w_i\)。

在一种具体方案中,若报名者 \(i\) 已经报名,可以为他选择任意一个整数

\[x_i\in[l_i,r_i] \]

作为其实际意见。

所有报名者按照一个排列 \(p_1,p_2,\ldots,p_N\) 依次完成报名。

在前 \(c\) 名报名者已经完成报名时:报名者 \(p_1,p_2,\ldots,p_c\) 占据各自对应的叶节点,其余叶节点由匿名临时代表占据,同时每名匿名临时代表的意见可以任取任意整数。

树上的代表自底向上产生。对于每个内部节点,设其三个儿子委员会产生的代表意见分别为 \(a,b,d\)。该节点必须从这三名代表中选择一名意见等于 \(\operatorname{med}(a,b,d)\) 的人作为本节点的代表,其中 \(\operatorname{med}\) 表示三个数的中位数。

如果有多名代表的意见都等于中位数,可以任意选择其中一名。被选中的代表保持原有身份和意见,并继续向父节点传递。

对于一个已经报名的正式报名者 \(i\),如果存在:某种对所有已报名者实际意见的选择、对代表意见的选择和在意见相等时的代表选择方式使得报名者 \(i\) 最终成为根节点的代表,则称报名者 \(i\) 在当前阶段是可能当选的。

不同报名者的“可能当选”可以由不同的方案实现,不要求存在同一种方案使他们同时当选。

共有 \(q\) 次询问。每次给出一个整数 \(c\),表示当前已经有前 \(c\) 名报名者完成报名。你需要求出此时所有可能当选的正式报名者的权值之和。

输入格式

第一行包含两个整数 \(K,q\)。

令 \(N=3^K\)。

接下来 \(N\) 行,第 \(i\) 行包含三个整数

\[l_i,r_i,w_i, \]

表示第 \(i\) 名报名者的意见区间和权值。

接下来一行包含 \(N\) 个整数

\[p_1,p_2,\ldots,p_N, \]

保证它们构成 \(1\sim N\) 的一个排列。

接下来 \(q\) 行,每行包含一个整数 \(c\),表示一次询问。

输出格式

对于每次询问,输出一行一个整数,表示前 \(c\) 名报名者完成报名后,所有可能当选的正式报名者的权值之和。

输入样例

1 3
0 10 5
20 20 7
30 30 11
1 2 3
1
2
3

输出样例

5
12
7

说明/提示

样例解释

树中只有三个叶节点。

当 \(c=1\) 时,只有报名者 \(1\) 已经报名。可以令两个匿名代表的意见分别小于和大于报名者 \(1\) 的意见,因此报名者 \(1\) 可能当选,答案为 \(5\)。

当 \(c=2\) 时,报名者 \(1,2\) 都可能借助匿名代表成为中位数,因此答案为 \(5+7=12.\)

当 \(c=3\) 时,三名报名者的意见分别属于 \([0,10],\quad\{20\},\quad\{30\}.\)

无论如何选择,只有报名者 \(2\) 可以成为中位数,因此答案为 \(7\)。

数据范围

\[1\le K\le 11,\qquad N=3^K, \]

\[1\le q\le 2\times 10^5, \]

\[-10^9\le l_i\le r_i\le 10^9, \]

\[0\le w_i\le 10^9, \]

\[1\le c\le N. \]

保证所有答案均不超过有符号 \(64\) 位整数范围。

子任务

本题共 \(50\) 个测试点,每个测试点 \(2\) 分。

子任务 测试点 测试点数 分值 特殊性质
1 \(1\sim5\) 5 10 \(K\le3\),且 \(q\le N\)
2 \(6\sim12\) 7 14 \(K\le6\),且 \(q\le2000\)
3 \(13\sim22\) 10 20 对所有 \(i\),\(l_i=r_i\)
4 \(23\sim32\) 10 20 对所有 \(i\),\(p_i=i\)
5 \(33\sim50\) 18 36 无特殊性质

T3 撤离树

时间限制:1500ms
空间限制:256MiB

题目描述

给定一棵包含 \(n\) 个顶点的无根树,顶点编号为 \(1,2,\ldots,n\)。

每个顶点 \(u\) 有一个标记 \(a_u\in\{0,1\}\):

  • \(a_u=1\) 表示顶点 \(u\) 设有撤离出口;
  • \(a_u=0\) 表示顶点 \(u\) 没有撤离出口。

你需要选择一个顶点排列

\[p_1,p_2,\ldots,p_n, \]

并按照该顺序依次删除所有顶点。删除一个顶点时,它与所有尚未删除邻居之间的边同时消失。

对于一个确定的删除顺序,按照删除顺序的逆序定义每个顶点是否成功撤离。

设顶点 \(u\) 被删除时,仍未删除的邻居共有 \(d\) 个。

  • 若 \(d=0\),则 \(u\) 成功撤离当且仅当 \(a_u=1\);
  • 若 \(d=1\),设唯一仍未删除的邻居为 \(v\),则 \(u\) 成功撤离当且仅当 \(v\) 成功撤离;
  • 若 \(d\ge 2\),则 \(u\) 撤离失败。

由于一个顶点的撤离状态只依赖于比它更晚删除的顶点,因此上述定义不存在循环依赖。

对于每个 \(k=0,1,\ldots,n\),求恰有 \(k\) 个顶点成功撤离的删除顺序数量。

答案对 \(998244353\) 取模。

输入格式

第一行包含一个整数 \(n\)。

第二行包含 \(n\) 个整数 \(a_1,a_2,\ldots,a_n\)。

接下来 \(n-1\) 行,每行包含两个整数 \(u,v\),表示树中存在一条连接顶点 \(u,v\) 的边。

输出格式

输出 \(n+1\) 个整数。

第 \(k+1\) 个整数表示恰有 \(k\) 个顶点成功撤离的删除顺序数量,对 \(998244353\) 取模。

输入样例 #1

3
1 0 1
1 2
2 3

输出样例 #1

2 0 2 2

输入样例 #2

30
1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0
14 23
23 19
7 8
22 6
17 2
18 5
20 7
9 17
8 11
3 30
9 26
13 15
13 1
21 10
24 25
30 18
28 11
27 3
12 16
22 27
26 20
16 24
29 4
6 2
5 29
12 14
1 21
15 25
4 10

输出样例 #2

995333783 645298737 542822516 489725680 185742783 409697333 340717711 195682479 828612801 820809177 838166306 740000936 154855254 645891702 389430604 983680367 751659388 523104276 393759621 316688663 269171486 19212252 719188108 402850864 136354448 695370223 581917990 345059189 238421259 165234432 268435456

说明/提示

样例 1 解释

共有六种删除顺序。

  • 顺序 \((1,2,3)\) 和 \((3,2,1)\) 中,三个顶点均成功撤离;
  • 顺序 \((2,1,3)\) 和 \((2,3,1)\) 中,顶点 \(2\) 在度数为 \(2\) 时被删除,因此撤离失败;顶点 \(1,3\) 均成功撤离;
  • 顺序 \((1,3,2)\) 和 \((3,1,2)\) 中,最后删除的是没有出口的顶点 \(2\),所以三个顶点均撤离失败。

因此恰有 \(0,2,3\) 个顶点成功的排列数分别为 \(2,2,2\)。

数据范围

对于所有测试数据:

\[1\le n\le 250,\qquad a_u\in\{0,1\}, \]

保证至少存在一个满足 \(a_u=1\) 的顶点。

子任务

本题共 \(50\) 个测试点,每个测试点 \(2\) 分。

子任务 测试点数 分值 特殊性质
1 3 6 \(n\le 9\)
2 3 6 \(n\le 18\)
3 4 8 树是一条链
4 3 6 树是一颗星
5 5 10 \(n\le 60\)
6 6 12 \(n\le 120\)
7 26 52 无特殊性质

T4 动态校准

时间限制:4000ms
空间限制:512MiB

题目描述

给定一个长度为 \(n\) 的整数序列

\[a_1,a_2,\ldots,a_n. \]

对于任意非空区间 \([l,r]\),你可以选择一个非递减实数序列

\[b_l\le b_{l+1}\le\cdots\le b_r. \]

定义这次校准的损失为

\[\sum_{i=l}^r(a_i-b_i)^2. \]

在所有满足非递减条件的序列 \(b\) 中,损失最小的方案是唯一的,称为区间 \([l,r]\) 的最优校准方案。

将最优校准方案中取值相等的连续位置合并为一个最大区间,称为一个常值段。也就是说,\([L,R]\subseteq[l,r]\) 是一个常值段,当且仅当

\[b_L=b_{L+1}=\cdots=b_R, \]

且它不能继续向左或向右扩展。

你需要支持以下操作:

  1. 修改一个 \(a_i\);
  2. 询问一个区间的最小校准损失及常值段数量;
  3. 询问某个位置在一个区间的最优校准方案中所属常值段的左右端点。

由于最小损失可能是有理数,答案对质数

\[M=998244353 \]

取模。对于有理数 \(p/q\),其中 \(q\not\equiv0\pmod M\),其模意义下的值定义为

\[pq^{-1}\pmod M. \]

输入格式

第一行包含两个整数 \(n,q\),分别表示序列长度和操作数量。

第二行包含 \(n\) 个整数 \(a_1,a_2,\ldots,a_n\)。

接下来 \(q\) 行,每行表示一次操作,格式如下。

  • 1 i x:令 \(a_i\leftarrow x\);
  • 2 l r:询问区间 \([l,r]\) 的最小校准损失和常值段数量;
  • 3 l r k:保证 \(l\le k\le r\),询问位置 \(k\) 在区间 \([l,r]\) 的最优校准方案中所属最大常值段。

输出格式

对于每次操作 2,输出两个整数:

  • 最小校准损失模 \(998244353\) 的值;
  • 最大常值段数量。

对于每次操作 3,输出两个整数 \(L,R\),表示所求常值段为 \([L,R]\)。

输入样例

5 5
3 1 2 5 4
2 1 5
3 1 5 2
1 3 10
2 2 5
3 1 5 4

输出样例

499122179 2
1 3
665496256 2
3 5

说明/提示

样例解释

初始区间 \([1,5]\) 的最优校准方案为

\[\left[2,2,2,\frac92,\frac92\right]. \]

可以证明,最小损失为

\[(3-2)^2+(1-2)^2+(2-2)^2+ \left(5-\frac92\right)^2+ \left(4-\frac92\right)^2 =\frac52. \]

它有两个常值段 \([1,3]\) 和 \([4,5]\)。模 \(998244353\) 意义下,

\[\frac52\equiv499122179. \]

修改 \(a_3=10\) 后,区间 \([2,5]\) 的最优校准方案为

\[\left[1,\frac{19}{3},\frac{19}{3},\frac{19}{3}\right], \]

其最小损失为 \(62/3\)。

数据范围

对于所有测试数据:

\[1\le n,q\le2\times10^5, \]

\[|a_i|,|x|\le10^9, \]

\[1\le l\le k\le r\le n. \]

题目保证出现的所有分母在模 \(998244353\) 意义下均可逆。

子任务

本题共 \(50\) 个测试点,每个测试点 \(2\) 分。

下表中的“询问”指操作 2 和操作 3。区间长度均指 \(r-l+1\)。

子任务 测试点 测试点数 分值 特殊性质
1 \(1\sim5\) 5 10 \(n,q\le200\)
2 \(6\sim10\) 5 10 \(n,q\le3000\)
3 \(11\sim15\) 5 10 每次询问的区间长度不超过 \(600\)
4 \(16\sim20\) 5 10 \(q\le600\)
5 \(21\sim30\) 10 20 每次询问的区间均为 \([1,n]\)
6 \(31\sim40\) 10 20 \(n,q\le50000\)
7 \(41\sim50\) 10 20 无特殊性质
posted @ 2026-09-21 10:39  ShanLiing  阅读(9)  评论(0)    收藏  举报
//雪花飘落效果