• 模拟测试65


    T1:

      枚举$m$的个数,$O(1)$算出有几个$x$符合条件。

      这样不仅效率低下,还会算重。

      把$m$一定时的所有结果拍在数轴上发现仅当$ym>=lcm(n,m)$时会算重。

      枚举到$lcm$即可。

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

    T2:

      直接统计复杂度太高,考虑换一个思路。

      枚举$gcd$,将所有边权为$gcd$倍数的边都连接起来,求树上直径即可。

      发现只有边权的因数才会成为$gcd$,所以只枚举约数即可。

      维护连接的边和点,一个一个删除。

      每条边至多被枚举$sqrt{v}$次,复杂度可以接受。

      时间复杂度$O(nsqrt{v})$。

    T3:

      神贪心。

      设起点为$s$,终点为$e$,最优决策一定为$s$和$e$中间的边都尽可能经过一次。

      由于要到达终点,$s$和$e$外侧的每条边至少被经过两次。

      而在向左走的步数一定的情况下,$e$在一定区间内。

      枚举$e$的位置,然后用堆维护中间的边,找出最大的几条边,仅走一次。

      其他边都要走两次。

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

  • 相关阅读:
    Android数字选择器-NumberPicker
    Eclipse上传代码到GitHub
    TortoiseGit上传代码到GitHub
    Git的简单介绍
    Android中的树状(tree)列表
    Android数据适配-ExpandableListView
    Android动画-补间(Tween)动画
    Android动画-帧动画
    Android中样式及主题
    Android消息通知-Notification
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11655732.html
Copyright © 2020-2023  润新知