洛谷月赛 20191109

本文作者MiserWeyte

真的是超级简单的一次信心赛,但我还是爆炸……

T1:秒切

T2:秒切

T3:这题意是啥???

明天中午有直播讲解。到时候再把不会的题改了。


T1:

入门难度。

一条n个节点的链,你可以跳过其中k段,求从1到n的最小长度。

贪心跳最大即可。暴力能过。

扫一遍,维护一个当前k段长度和总长度和,当前k段长度打擂台求最大,输出总长度减去最大k段长度。

\(O(n)\)

T2:

依旧入门难度。一段01序列,求有多少个连续(均为0或均为1)子串。

扫一遍判断当前值与上一个值是否相等即可。暴力能过。

\(O(n)\)

T3:

给定\(S\)\(T\)初始为空串,每次操作在\(T\)最前或最后插入一个字符,并求有多少个不同的\(l\),使得\(l\)范围内没有对应相同的元素。

(即$\forall i\in[1,~l],S[i] \not= T[T.size()-l+i] $)

17分:

考虑类似于最大公共子串的写法。

表格中的一个格子\((x,~y)\)为true,当且仅当对应的\(S[x]\)\(T[y]\)不同

每次维护\(T\),并重新求一次\(l\)

把每种相同颜色的方格称为一条对角线,由于只有\(T\)的尾部和\(S\)的头部能重合,合法的对角线只有上图中的几条。

每次扫一遍图中有几条对角线,线上所有格子均为true。

\(O(mn^2)\)。(大概吧)

50分:

由于每次只能\(T\)的首尾添加元素,考虑两种情况:

1.若在尾部添加:

则只需要考虑黑色框起来的几个格子。

如果第一个格子\((0,~3)\)为true,则ans++。

整一个bool的vector存储每条对角线是否成立(即均为true),如果其余几个格子所在的对角线成立,而这个格子不为true,则ans--。

2.若在头部添加:

则需要增加一条新的对角线,跑一遍这个对角线是否成立。

总体\(O(mn)\)。大概吧。

貌似bitset优化后70pts,再开个O2就A了

100分:

不会。待更。

T4:

看上去就不太可做的一道多项式求和。

8分:

模拟题意。

16分:

加一个记忆化一类的优化。

100分:

不会。待更。

猜你喜欢

转载自www.cnblogs.com/miserweyte/p/11828881.html