闲扯
我怎么又被卡常了呀! $map$ 常数是真的垃圾。。。
$T1$
Solution
我们将所有点按照 $x$ 为第一关键字, $y$ 为第二关键字的顺序排序,然后我们可以发现一个奥妙重重的事:若 $a,b$ 匹配, $p,q$ 匹配,且满足 $a
q$ 。
我们枚举第一对匹配的点为 $a,b$ ,显然 $a$ 之前, $b$ 之后没有匹配的点个数之和不超过 $k$ 。
所以 $a\in[0,k+1],b\in[n-k,n]$ ,我们直接 $k^2$ 枚举,然后使用双指针 $O(n)$ 判断当前情况是否合法即可。
关于双指针判断:如果两端加起来合法,那么 $l+1,r-1$ ,否则,如果加起来小于希望的, $l+1$ ,否则 $r-1$ 。
Code
1 |
|
$T2$
Solution
我考试的时候,最开始完全想偏了,最后有点思路,没时间写了。。。
设 $dp_{t,l,r}$ 表示前 $t$ 行连通,且第 $t$ 行剩的是区间 $(l,r]$ 的概率。
我们有一个十分简单的转移:
条件是 $(l,r] \cap (lp,rp]\not= \empty$ , $p_{l,r}$ 表示 $k$ 天后剩下区间 $(l,r]$ 的概率。
显然, $p_{l,r}=p_l\times p_{m-r}$ ,而 $p_l=\binom{l}{k}\cdot p^l\cdot (1-p)^{k-l}$ 。
现在,我们定义:
我们可以推出:
我们将 $dp_{t,l,r}$ 代入上面的式子里:
我们只需要处理 $p$ 的前缀和, $p_i\cdot sum1_{t-1,i}$ 的前缀和,以及 $p_{m-i}\cdot sum2_{t-1,i}$ 的前缀和即可 $O(nm)$ 求出答案。
Code
1 |
|
$T3$
Solution
我们先做出 $A$ 边的最小生成树,我们计作 $G$ 。
假设当前的 $x$ 为 $-\infty$ 。显然,此时整幅图的最小生成树就是由 $A$ 边构成的最小生成树。
我们考虑从小到大依次加入 $B$ 边。
我们找出 $G$ 中 $u\rightarrow v$ 这条链上还没断掉的边权最大的边。
显然我们可以算出一个临界值 $k$ ,使得 $x=k$ 时,加入该边和 $B$ 边答案一样,而 $x>k$ 时, $B$ 边更优。所以我们在 $x=k$ 时断掉这条边,而加入 $B$ 边。
显然,我们最多会断掉 $n-1$ 条边,之后就全部都是 $B$ 边了。
但是每条边的临界值是不同的,可能边权更大的边临界值更小。
那么是怎么保证正确性的呢?
假设 $G$ 上的一条边同时被值为 $a,b(a<b)$ 的两条 $B$ 边覆盖。
显然,边权为 $a$ 的边会更早替换这条边。所以边权为 $b$ 的边只能选择另外的边替换。
我们按照临界值从大到小依次换边,同时处理出答案即可。
Code
1 |
|