zoukankan      html  css  js  c++  java
  • 模拟测试20191011

    %%%$Huge skyh rank1太巨了$

    $T1:d$

    可以发现最优决策一定是删x个a最小的,m-x个b最小的

    那么我们先删m个a最小的,然后一个个把大的选上,同时删去当前y最小的就好了

    复杂度$O(nlogn)$

     

    $T2:e$

    可以发现题中要求的联通块其实就是他们到公共lca的路径并

    求abs可以很自然地想到求前驱后继,这个可以用主席树来维护

    剩下的乱搞就好了,树剖或者树上主席树都行

    复杂度$O(nlog^{2}n)$/$O(nlogn)$

     

    $T3:f$

    考虑每一位的贡献

    显然两个数成为逆序对只与他们最高的不同位有关

    预处理出来每一位$XOR 1$/$XOR 0$对逆序对的贡献

    然后考虑怎么求出答案

    显然排名随着$f(x)$单调递增

    二分答案,考虑怎么$check$

    利用$meet in middle$思想,把k位的数分成两个$frac{k}{2}$位

    将左边排序,每次扫描右边并在左边二分查找就好了

    也可以用单调指针维护,能省去一个$log$

    复杂度$O(nk+2^{frac{k}{2}}log^{2})$/$O(nk+2^{frac{k}{2}}log))$

  • 相关阅读:
    sprinf sprintf_s 的用法
    c++中static的用法详解
    C++数值类型与string的相互转换
    setTimeout(function(){}, 0);
    学习 Node.js 的 6 个步骤
    $destroy——angular
    模态框——angular
    日期控件
    前端加密
    ui-router
  • 原文地址:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11654581.html
Copyright © 2011-2022 走看看