【考试】【2022.2.9】考试总结
一个春节后,整个人都变逊了呢 ...
案发现场
开题顺序
\(D \rightarrow B \rightarrow A \rightarrow C \rightarrow F \rightarrow E\)
简要案情
\(A\)
时间: \(9:20 \rightarrow 10:00\)
我还以为有多难 ...
线段树练手题,还没有下传标记和懒标记 ...
很快啊,啪的一下就写完了。
\(B\)
时间: \(8:30 \rightarrow 9:20\)
离大谱的题目。
我的转移方程不知道比题解和其他同学的复杂了多少倍,还让我一直调试 ...
但是最后竟然还对了?
被卡常但没完全被卡常 ...
\(C\)
时间: \(10:00 \rightarrow 10:40\)
骗分开始。
直接暴力 \(DP\) 骗分。
你以为我不知道正解是树状数组 + 三分法求函数极值吗?我只是不会写而已 ...
\(D\)
时间: \(8:00 \rightarrow 8:30\)
我一眼就看出你不是人这是洛谷上三倍经验的原题,果断开写。
原本只要 20 分钟就能写完,但是单调栈写挂了后又调试了 10 分钟 QAQ ...
\(E\)
时间: \(12:10 \rightarrow 12:40\)
最后写的题,根据当时情况果断写暴力。 结果只有 20 分 QAQ ...
\(F\)
时间: \(10:40 \rightarrow 12:10\)
第一次暴力 \(DFS\) 写这么久,还一分都没骗到 ...
下次能不能多给一点数据点?
直接枚举可能可以一起合并的两个外星人,并把它们合并成一个外星人,累计贡献即可。
真相大白
\(A\)
线段树练手题。
不需要建树,操作期间直接设为 \([1,m]\) 。
对于 \(A\) 操作,直接线段树单点修改;对于 \(Q\) 操作,直接线段树求区间最大值。
所以讲来讲去不还是模板题吗?
\(B\)
\(DZY\) 的奇妙转移方程
看到所有人的转移方程都很简单,那么我就提供一个离大谱の转移方程吧!
树形 \(DP\) ,考虑直接计算所需数据,分两次 \(DFS\) 完成。
\(DFS1\)
维护三个值:
-
\(dep_x\) \(x\) 节点深度。
-
\(sum_x\) \(\sum dep_y (y \in subtree_x)\) 。
-
\(son_x\) \(subtree_x\) 的大小。
\(DFS2\)
如果以 \(root\) 节点为根进行 \(DFS1\) ,那么节点 \(root\) 的贡献显然为 \(sum_{root}\) 。
其他节点的贡献则需要计算得出。
非根节点 \(x\) 的贡献分为两部分:
-
原本在 \(subtree_x\) 内。
-
原本不在 \(subtree_x\) 内。
第一部分可以直接通过 \(sum_x - son_x \times (dep_x - 1)\) 得出,记为 \(ressum_x\),而第二部分又可以一分为二:
-
原本在 \([root,father_x]\) 上。
-
原本不在 \([root,father_x]\) 上。
第二部分前半段可以用前缀和的前缀和维护,记为 \(totsum_x\) ,则有:
后半段记为 \(totsum\) ,则有:
那么答案 \(ans_x\) 记为:
\(ans_x = \begin{cases}sum_x&x = root\\ressum_x+totsum_x+sumsum_x&x\ne root\end{cases}\)
于是就做完了。
\(C\)
QAQ
\(D\)
不能说非常相似,只能说一模一样。
首先计算出在每一个位置上最多能往上延伸的 1 的个数 \(a_{i,j}\) 。
然后将每一个点向左右拓展,分别找到其左侧和右侧第一个比 \(a_{i,j}\) 小的数的位置(也就是保证 \(a_{i,j}\) 为区间最小值),分别记为 \(l_{i,j}\) , \(r_{i,j}\)。
那么这一个点对答案的贡献即为 \((r_{i,j}-l_{i,j}-1)\times a_{i,j}\)。
\(E\)
QAQ
\(F\)
\(本来想到正解了 ...\)
区间 \(DP\) 。
对于区间 \([l,r]\) ,取 \(x\) 号外星人作为分界,使 \(l \leqslant x_l , x_r \leqslant r , x_p \leqslant y_p \ (l \leqslant y_l , y_r \leqslant r , x \ne y)\) 。
再取 \(k \in [x_l,x_r]\) 作为分界点,则有 \(f_{l,r} = \min(f_{l,k-1}+f_{k+1,r}+x_p)\) 。

浙公网安备 33010602011771号