2020杭电多校(第五场)
收获
- 一些看似复杂的找规律题直接找一个恰当的数据结构模拟就好。
1001 Tetrahedron
用等体积法求出 $h$ 和 $a,b,c$ 的关系(底面积用余弦定理+正弦定理)为:
于是要求的是:
期望显然是:
预处理一下,回答即可。
1 |
|
1003 Boring Game
折叠 $k$ 次后展开,形成 $2^k$ 个格子,每一个格子建立一个链表。每一次折叠,就是把当前最左端的链表反转之后接到最右端的链表尾部、次左端的链表反转后接到次右端的链表尾部、……如此便得到下一阶段的链表。反复执行直到只剩下一个链表,按 $p$ 编号即可。
1 |
|
1007 Tree
设 $dp[i][0/1]$ 表示以 $i$ 为根的子树内是否有 $>k$ 的点的最大权值和,注意这个权值和要加上 $i$ 到父节点的边权,则:
- $dp[i][0]$ 等于最大的 $k-1$ 的子节点 $dp[sons][0]$ 之和加上到父节点的边权;
- $dp[i][1]$ 等于所有子节点 $dp[sons][0]$ 之和加上到父节点的边权,或者 $dp[i][0]$ 把某一个子节点从 $dp[son][0]$ 换成 $dp[son][1]$.
更新答案特别注意一下,除了所有 $dp[i][0],dp[i][1]$ 取 $\max$ 之外,还有一种情形:
- 不取第 $i$ 个点向上到父节点的那条边,多取一个子节点。注意这个情形是没被 $dp$ 状态包含的。
1 |
|
1009 Paperfolding
向上或向下折 $a$ 次,就会形成 $2^a$ 条折痕,分割出 $2^a+1$ 条横带;同理,向左或向右折 $b$ 次,就会形成 $2^b$ 条折痕,分割出 $2^b+1$ 条竖带;向上向下与向左向右的顺序不重要,只要向上或向下折 $a$ 次,向左或向右折 $b$ 次,答案就是 $(2^a+1)(2^b+1)$.
于是长度为 $n$ 的串的期望答案是:
$i$ 是枚举向上或向下折的次数,$\binom{n}{i}$ 是从 $n$ 次操作中选 $i$ 次向上或向下折,$2^i$ 是每一次向上/向下折可以选择是向上还是向下,$2^{n-i}$ 是每一次向左/向右折可以选择是向左还是向右,$(2^i+1)(2^{n-i}+1)$ 就是这么折的答案,$4^n$ 是总折叠方案数。
化简上式:
问题解决。
1 |
|
1012 Set1
首先,前 $\frac{n-1}{2}$ 个答案肯定是 $0$,我们考虑 $\frac{n-1}{2}+i$ 这个数留下来的概率。
如果 $x=\frac{n-1}{2}+i$ 留下来了,考虑大于 $x$ 的数,它们一定是与某个小于 $x$ 的数一起删掉的(否则 $x$ 作为最小数不会留下来),一共 $A_{x-1}^{n-x}$ 种方案;随后小于 $x$ 的数还有些剩下的数,它们进行两两匹配即可;考虑 $n$ 个数两两匹配的方案数,$f(n)=(n-1)f(n-2)$,即第一个数选后面一个数匹配再乘上剩下 $n-2$ 个数两两匹配的方案数,解得:$f(n)=(n-1)!!$. 所以小于 $x$ 的剩下的数两两匹配的方案数为 $(x-1-n+x-1)!!=(2x-2-n)!!=(2i-3)!!$. 综上,$x$ 留下的方案数为 $A_{x-1}^{n-x}(2i-3)!!$. (添加定义 $(-1)!!=1$ )。
对每个数算出它留下的方案数,加起来得到总方案数,除一除即可。
1 |
|