翻牌 $\texttt{flip}$
这题是一道简单的二分查找题目。
对中位数 $x$ 进行二分(可以选择 $x \in A \cup B$ 或者 $x \in [1, 10^9] $。
每次 check 的时候计算 $\displaystyle \sum\limits_{i=1}^n[a_i \ge x] + \max\limits_{[l,r] \in [1,n]}\{\sum\limits_{i=l}^r ([b_i \ge x] - [a_i \ge x])\}$ 是否 $> \dfrac{n-1} 2$,成立则代表 $x$ 一定不在中位数的右边,即 r=mid+1,这题就做完了。
时间复杂度 $ \mathcal O (n \log_2 n) $。
Code
1 |
|
塔 $\texttt{tower}$
$ \texttt{caution: } \text{本题我不是很清楚,若有疑问,欢迎评论} $
这是一道思维 dp 的题目。
令 $d_i$ 表示 $i$ 与 $i+1$ 塔之间的最小高度差。
设状态 $ f(i,j) $ 表示 到了第 $i$ 个塔,该塔的高度为 $j$ 时的最小区间加次数。
容易得出
$$
\begin{gather}
g’(j) &=& min \{ g(j - d_i) ,\ g(j + d_i) + d_i \} &\qquad (g’=f_{i+1}, g=f_{i}) \\
f(0,0) &=& 0 \\
\begin{array}{c}
f(0,1) \\
f(0,2) \\
\vdots \\
f(0, \sum\limits_{i=1}^{n-1} d_i)
\end{array} &=& +\infty
\end{gather}
$$
略证:
显然从 $j-d_i-1$ 转移不比 $j-d_i$ 好,另一种情况同理。
如果从 $j-d_i$ 转移而来,那么可以看作把前面的一些区间加 $[l, i-1]$ 更新为 $[l, i]$,总次数不变。另外一种显然需要 $d_i$ 次 $[i,i]$ 区间加,可以证明没有方案使其增加次数 小于$d_i$。
Code
1 |
|
图 $\texttt{graph}$
这题类似于性质题。
在本题中,如果一个诱导子图有 $x$ 个节点,那么最多就有 $\dfrac {3x} 2 $ 条边。而两个连通的子图至少需要 $2(x-1)$ 条边。
于是乎,我们有:
$$
\begin{aligned}
\dfrac {3x} 2 &\ge 2(x-1) \\
x &\le 4
\end{aligned}
$$
则(令 $(i, j, c)$ 表示 点 $i,j$ 之间的一条 颜色为 $c$ 的边,$E$ 为全图边集,$V$ 为全图点集)
$$
ans=\sum
\begin{Bmatrix}
n &\qquad (x=1) \\
\sum\limits_{(i,j,0) \in E} [(i,j,1) \in E] &\qquad (x=2) \\
\dots &\qquad (x=3,4)
\end{Bmatrix}
$$
为了更加直观,看图:

Code
1 |
|
std
1 |
|