• 模拟93 题解


    A. 序列

    一眼二分,然后发现二分有点不对?

    一测大样例果然不对,因为有两个限制,问题并不具有单调性。

    作前缀和后问题其实是个三维偏序问题,似乎还得一个$log$复杂度。

    先打个$cdq$分治套树状数组,结果极限数据$0.3s$,所以就$AC$了。

    正解确实是一个$log$。

    最后一维偏序(下标)的意义并不大,只要维护最小值。

    所以可以给三元组按$x$排序,依次插入树状数组,

    维护每个$y$值最小的下标,这样的复杂度显然是$O(nlogn)$

    B. 二叉搜索树

    显然的区间$dp$?

    设$dp(l,r)$表示划分区间$[l,r]$的答案。

    那么$dp(l,r)=min_{i=l}^{r}{dp(l,i-1)+dp(i+1,r)}+sum limits_{i=l}^{r}x_i$

    暴力做是$O(n^3)$的,然而对于同一长度的$dp$转移点显然具有单调性。

    所以可以用决策单调性优化,复杂度$O(n^2logn)$。

    更进一步,对于左侧减少一个单位长度或右侧减少一个单位长度,转移点同样具有单调性,所以复杂度$O(n^2)$。

    C. 走路

    暴力做法直接高斯消元,复杂度$O(n^4)$。

    问题在于很多相同的方程被消了多次,有很多无意义的操作。

    考虑分治高斯消元。

    $solve(l,r)$表示$[l,r]$内的方程还没有消的情况的上三角。

    当$l=r$,可以暴力回代求出$ans_l$。

    对于其他情况,分别用$[l,mid]$进行消元,递归$(mid+1,r)$。

    用$[mid+1,r]$进行消元,递归$(l,mid)$。

  • 相关阅读:
    python学习的第六天数据类型及内置方法part2
    作业5
    Python学习第五天基本数据类型及内部方法part1
    周作业
    作业
    python学习第四天控制流程if、while、for
    作业
    python学习第三天基本数据类型、格式化输入输出、运算符。流程控制
    从排序数组中删除重复项
    D3.js 比例尺
  • 原文地址:https://www.cnblogs.com/skyh/p/11762978.html
Copyright © 2020-2023  润新知