2019.08.20【NOIP?提高组】模拟 A 组 总结

考场:(85 + 0 + 35 = 120)


T1:

赛时想到正解,但将(LIS)(最长上升子序列)写成了最长不下降子序列,GG(竟然还WA85)
我想的太笨,在求完(f[])(g[]),在用线段树维护做一遍。
(f[i])指以(i)结尾的(LIS)(g[i])指以(i)为开头的(LIS)
对于当前(i),我们将前面的(f[j])都添加到(a[i]-x)当中,而当前的答案则为(g[i]+tree_{max}(-maxn,a[i]-1))


T2:

考场想到了(dfs)(DP),折半搜索。。。
但发现时间都过不了,(DP)的话空间就(MLE),且时间也(TLE)
结果没想到正解是(DP)
(f[i][j][k])表示走到((i,j))乘积为(k)的方案数。
由于时空超限,发现k有很多多余的。
所以可以设(f[i][j][k])表示走到((i,j))乘积为(n/k)的方案数。


T3:

考场先很快想到了(O(n^2*l)) 的解法,随后想到了(O(n^2))的预处理做法,但是空超,也没时间了,就这样打完了。
原来由于询问只有(100)个,所以我们可以压缩空间,将(f[i][j])变成与i子串为(q[j-1]+1) ~ (q[j])相似的个数。


总结:

对于每个解法,都要尝试着去优化。
如果空间过不去的话,可以试着除去一些不必要的空间。
要先想好思路,不要打到一半后被证伪了。。。

现在:(100 + 100 + 100 = 300)

转载需注明出处。
原文地址:https://www.cnblogs.com/jz929/p/11383151.html