模拟76
$T1.$ 一开始想简单了。 非常快得码完,刚交上去就发现自己好像伪了。。。。 然后发现有一档部分分$A*B=N$,可以非常简单地构造。 然后就想到正解了。 $T2.$ 我们可以发现,在大部分情况下,答案都是连续的。 那么我们只需要考虑,答案在什么地方会断开。 显然只有相邻两个能被拼出的数$a_i$,$a_j$,并且$a_j$比$a_i$的2倍更大时才会出现不合法。 进一步观察可以发现,这种情况只会出现在$a_i$为某些数的和,$a_j$为一个数时。 于是排完序,前缀和扫一遍就没了。 $T3.$ 考试的时候一直在想,前序遍历是啥。。。 然后突然发现前序遍历好像就是$dfs$序,也就是说,每个点的子树序号是连续的一段。。。 然后就可以设计$dp$转移了。 另外,由于我考场上没有想到怎么保证合法,所以只能拿$bitset$判断合法性,极限数据跑了$3.5s$,然后我手写了$bitset$,它就从$3.5s$直接砍到了$1.2s$。甚至跑的比某些$O(n^3)$还快。。。。 手写bitset牛逼bitset复杂度是O(1)的 来源: https://www.cnblogs.com/hzoi-cbx/p/11689934.html