• 省选模拟60


    A. 摧毁图状树

       考虑一个贪心,用一个堆来维护可能候选的点。

       每次取出一个点的时候先判断是否已经被覆盖,如果没有覆盖那么覆盖他和他的k级祖先。否则直接跳过。

      发现复杂度在于叶子节点的数量。可以考虑每次直接加上叶子的答案,然后将其他距离叶子最近距离为k的点加入堆。

      这样的复杂度是调和级数*数据结构的,预处理出来所有k的答案即可。

       覆盖k级祖先的操作可以用线段树+dfs序来完成。

    B. 排列统计

       毒瘤题,至今没有调出来。

      枚举$x$这个数在位置$y$造成的贡献,令$dp[i][j][k]$表示第$i$次操作,$y$前面有$j$个大于$x$的数,k则是位置y上的数和x的大小关系和x的位置,一共分为五种情况。

      转移极其繁琐而显然,所以不写了。

      

    C. 归并排序

      考虑如果一个长度为2的区间错误会造成的影响,可以看做是较小的值变成了较大的值+0.5。

      将每个数的两种情况看成一个区间,那么一个数的答案可以由跨过这个数的区间个数得到。

      那么用树状数组来维护这个过程即可。

  • 相关阅读:
    细说java平台日志组件
    linux远程执行命令
    linux命令 common 文件比较
    Linux Shell脚本编程--cut命令
    linux sort命令
    shell中if判断一个变量为空
    linux shell if参数
    wc命令
    date 命令
    let 与 expr Shell运算比较 let强强胜出
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12628778.html
Copyright © 2020-2023  润新知