被 $D$ 卡了一会.
D Water Bottle
分两种情况做.
第一种情况,初始的水没有达到容器体积的一半.
第二种情况,初始的水达到了容器体积的一半.
利用反三角函数求出角度.
1 | //%std |
E Gluttony
可以二分一个答案 $mx$ .
检验时,贪心去匹配,让 $a$ 最小的人去吃 $f$ 最大的食物.
限定 $a\cdot f\le mx$ ,可以算出每个人的权值至少要减少几次,判断这个总和是否超过 $k$ 即可.
1 | //%std |
F Fork in the Road
设 $f(i)$ 表示点 $i$ 到 $n$ 的期望步数,设 $S_i={j|(i,j)\in E }$ ,则转移有
$$
f(n)=0,f(i)=\frac{1}{|S_i|} \sum_{j\in S_i} f(j)
$$
暴力做法是枚举每条边,计算出删掉它之后的答案,时间复杂度是 $O(m^2)$ 的.
其实对于所有以 $i$ 为起点的边 $(i,j)$ ,只需要贪心删去 $f(j)$ 最大的那条边去更新答案即可.
这样只用删 $O(n)$ 次边,时间复杂度 $O(nm)$ .
1 | //%std |