模拟测试76

T1:spa

  考虑特殊构造,使不一样段不会相互影响。排序

  分块构造,大段递减,小段递增。遍历

  最长降低子序列即为段数,最长上升子序即为最长的一段的长度。统计

  特判无解状况,而后分配一下长度便可。时间

  时间复杂度$O(n)$。枚举

T2:

  将全部的数排序,统计前缀和,若是到某个点发现下一个数大与前缀和的两倍,则会出现断层。

  统计断层长度获得答案。

  时间复杂度$O(nlogn)$。

T3:

  考虑转化一下限制条件。

  知足条件的树有如下性质:

    一、子树编号连续;

    二、坐子树节点小于右子数;

    三、左子树根节点编号为当前节点加一。

  首先咱们强制$a<b$,那么两个点的关系为前后关系。
  强制$a$在$b$后:
    $a$必定是$b$的祖先,由于若是他们的位置关系是第二种的话,$a$在中序遍历中必定在$b$以前,因此$b$必定在$a$的左子树中。
  强制$a$在$b$前:
    若是$a$是$b$的祖先,则$b$在$a$的右子树,其他状况下$b$不在该子树中,这种限制和$b$不在$a$的左子树中等价。

  设$dp[i][j]$为以$i$为根,子树大小为$j$的方案数,枚举左子树大小转移。

  时间复杂度$O(n^3)$。

相关文章
相关标签/搜索