1003模拟题解

T1

阅读题干,显然,字典序排序。

首先很容易想到一个错误做法:

从前往后,每一个字符与后一个进行比较,

只要比后面的大,

就交换。

但是仔细想想实际上是看了样例

然后发现显然不对。

然后换一种贪心思路:

我们把未排序的部分中最小的字符尽可能地前移。

显然正确。(95分)

由于复杂度限制,

需要使用线段树或平衡树进行优化。不会

T2

首先递推从每个点出发单调下降的路径数量。

对于每个点\(x\),设从\(x\)出发,到每颗子树中单调下降的路径数量分别为\(s_1\),…,\(s_k\),那么以该节点为海拔最高点的合法路径数量为

\[\begin{equation*} \left(\sum_{i=1}^ks_i\right)^2-\sum_{i=1}^k{s_i^2} \end{equation*} \]

将所有点的贡献相加就是答案。

时间复杂度\(O(n)\)

T3

通过\(bfs\)求出\(dis_{x,y,0/1}\)表示从\(x\)\(y\)长度为偶数/奇数的最短路径,那么存在一条从\(x\)\(y\)长度为\(d\)的路径当且仅当\(dis_{s,y,d~ ~mod~ ~2}\le d\)

空间复杂度较大,可以通过把询问离线将空间复杂度优化成\(O(n)\)

时间复杂度\(O(n^2)\)

T4

不会

posted @ 2020-10-03 14:55  Luo_Feng_Han  阅读(109)  评论(0编辑  收藏  举报