闲扯
今天的 $T1$ 是考英语的???
题面
$T1$
Solution
打表,发现答案为 $\frac{n!}{2}$ ,其中 $n=1$ 时,是特例,答案为 $1$ .
但是由于需要输出序数词,然后我光荣暴毙。
分以下几种情况讨论:
- $n\%100\in[11,19]$ 跟 $th$ 。
- $n\%10=1$ 跟 $st$ 。
- $n\%10=2$ 跟 $nd$ 。
- $n\%10=3$ 跟 $rd$ 。
- 其余的都是 $th$ 。
Code
1 |
|
$T2$
Solution
最开始我写了一个链表,然后发现写挂了,就改成了启发式合并,虽然多了一个 $\log$ ,但是常数不大,可以通过。
对于修改操作,我们维护一个全局的 $tag$ 。
在加入一个新元素时,我们加入的值为 $val-tag$ 。
查询时,答案为 $val+tag$ 。
Code
1 |
|
$T3$
Solution
看到这道题,我们有一个显然的想法:求出点为根结点的答案,然后取一个 $\min$ 作为最终答案。
考虑换根。
设当前以 $u$ ,为根结点,要转移到 $v$ 这个节点上。
对于 $v$ 的子树中的点,它们的贡献由 $\sum dis^2$ 变为了 $\sum (dis-w)^2$ 。其中 $dis$ 表示到根结点的距离, $w$ 为这条边的权值。
可以发现答案增加了 $w^2\cdot sz_v-2w\cdot\sum dis$ 。
同理,对于其他点,答案增加了 $w^2\cdot(tot-sz_v)+2w\cdot (sum-\sum dis)$ 。
其中 $tot,sum$ 分别表示总的选手数和所有点到当前根结点的距离之和。
我们动态维护一下 $sum$ 即可 $O(n)$ 处理出所有点的答案。
Code
1 |
|