闲扯
今天的 $T1$ 想的太复杂了, 结果直接暴毙。
$T2,T3$ 由于去体检,没时间写,只打了两个最简单的暴力上去。。
还有 $OI$ 中可能用到的数学知识,我觉得应该补一下?(感觉没时间了啊) $T2$ 的用叉积求面积我是真的服,没见过,乘热学了一下。
题面
$T1$
Solution
我们如果考虑小 $Y$ 怎么赢可能有点过于复杂了,所以我们考虑小 $D$ 的必胜策略。
我们设 $f_u$ 表示考虑以 $u$ 为根结点的子树中,小 $D$ 需要额外的几次操作才能赢。
显然,对于叶子节点,我们有 $f_u=1$ 。
那么对于非叶节点,我们有 $f_u=\min(\sum f_v-1,0)$ 。
表示所有的子树都需要满足,但是由于当前节点可以先走一步,所以需要的额外次数减少 $1$ 。
那么最后小 $D$ 能获胜的条件是 $f_1=0$ 。
Code
1 |
|
$T2$
Solution
如果直接计算每一个可能的情况的面积,显然不好算,我们考虑计算每一块被删除的期望。
我们假定在 $[l,r]$ 之间的端点,除了 $l,r$ 都没选,那么这一块被删除的概率就为 $P=\frac{C_{n-(r-l+1)}^{k-2}}{C_n^k}$ ,那么相应的,我们要在答案中减去 $S\cdot P$ 。
对于 $l,r$ 我们可以 $O(n^2)$ 枚举,这样我们就只需要算出每一块的面积即可。
这里介绍一种计算面积的方法:向量叉积。
我们假定一个 $n$ 边形,它的定点按照顺时针排序依次为 $P_1,P_2,\cdots,P_n$ 。
那么它的面积就为 $\sum_{i=1}^{n-1}\vec{OP_{i+1}}\times\vec{OP_i}+\vec{OP_1}\times\vec{OP_n}$ 。
其中 $\vec{a}\times\vec{b}$ 表示向量叉积。
对于 $\vec{a}=(a_x,a_y),\vec{b}=(b_x,b_y)$ ,我们有 $\vec{a}\times\vec{b}=a_xb_y-a_yb_x$ 。
然后这道题就可以 $O(n^2)$ 做出来了。
Code
1 |
|