zoukankan      html  css  js  c++  java
  • 考试总结 模拟93

    T1想了好多东西,什么set了,最后只写了一个暴力减枝

    T2感觉是要大力转化题意,但是没有思路

    T3根本没有想到高斯消元

    T1「二维偏序」「树状数组」

    力推大佬总结

    题意首先转化为求解sa_r>=sa_{l-1}&&sb_r>=sb_{l-1}的max{r-(l-1)}

    加上r>l之后是三维,然后大佬就各种CDQ,树套树的nb做法

    但是由于询问是max{r-(l-1)},显然就算第三维不保证,也不会更新出ans

    那么就剩二维了,似乎很常规的思路是,将一维排序,剩的一维可以用树状数组解决

    这道题目还要注意特判0

    T2 「搜索树」「转化题意」「区间DP」

    二叉搜索树的性质:对于一个节点x,其lc或rc的所有点构成的必定为一个连续的区间

    那么在建树的过程中,对于一段区间要想成为一棵子树,其必定要有一个根节点 x in [l,r]

    dp定义不难写出f[l][r]表示将[l,r]建成一颗子树之后的最优贡献,再定义一个辅助数组g[l][r]表示该最优情况下的根节点是谁

    转移f[l][r]=f[l][k-1]+f[k+1][r]+sum{a[l,r]} kin [l,r]

    考虑去优化这个O(n^3)玩意。

    首先给出结论(我也不知道大佬怎么想到的)

    k的范围缩小至[g[l][r-1],g[l+1][r]]

    证明其实比较简单:

    考虑在已经建出的[[l,r-1]的树中加入点r显然要加在g[l][r-1]的右子树的某位置

    在这种情况下想要变成最优的,只可能是将根转为g[l][r-1]的右子树的某个点

    所以kin [g[l][r-1],r]同理得kin [l,g[l+1][r]]取一个交集即可

    复杂度变成O(n^2)证明

    最外层枚举区间长度O(n)

    那么只要证每个len下枚举的sum{k}的复杂度O(n)即可

    考虑[l,r]的范围是[g[l][r-1],g[l+1][r]]

    [l+1][r+1]的范围是[g[l+1][r],g[l+2][r+1]]

    然后发现g[l+1][r]是相等的,显然每个点至多会被枚举两次

    证毕

  • 相关阅读:
    磁盘分区异常占用满了
    平滑升级nginx
    supervisor进程异常挂掉
    datetime值毫秒四舍五入
    docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
    Tomcat最大连接数问题
    Docker:设置代理proxy
    easy_install和pip安装python库修改默认的源
    zabbix监控mysql之Warning: Using a password on the command line interface can be insecure.
    Mysql忘记密码解决方法
  • 原文地址:https://www.cnblogs.com/casun547/p/11768181.html
Copyright © 2011-2022 走看看