模拟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)的

posted @ 2019-10-17 09:02  tdcp  阅读(116)  评论(2编辑  收藏  举报