• 牛客挑战赛57总结


    T1

    正解应该是用桶存一下每个数,枚举 gcd 判断桶内是否有 \(n\) 个数是其倍数。
    由于 \(a_i\)\(a_i+1\) 是互质的,所以一个数不会在同一个 gcd 处统计两次,保证了答案的正确性。
    注意此时值域是 \(10^6+1\) 的。
    然而这题好多水法可以过。。。数据是真的水。

    T2

    一眼看去真的不会做QwQ绝对不是我不认真打比赛。
    最终还是找规律的……非完全归纳法永远的神!
    结论是:先找出最大的 \(2^k \le nm\) ,第一问答案一定是 \(2^{k+1}-1\)但凡打个表都知道

    1. 如果 \(2^k\) 不在行首,那么它左侧一定有 \(2^k-1\) ,就取这两个。
    2. 否则, \(m\) 一定是奇数,取该行和上一行的中间项。

    实际上,第二种情况是 \((2^k + a-1) xor (2^{k} -a) = (2^k + a-1) + (2^{k} -a)=2^{k+1}-1\)
    即二者没有交,前者是 \(2^k\) 加上 \(a-1\) ,在 \(0\) 上添加了若干 \(1\),后者是 \(2^k-1\) 减去 \(a-1\) ,在一堆 \(1\) 里扣掉了几个。

    T3

    直接树剖啦不讲。

    T4

    比赛还有几分钟的时候想出来了,没有时间写QAQ
    先找出直径的中点(可以是一条边的中点),设为 \(S\)

    Def 定义距离中点 \(S\) 距离为 \(k\) 的点为 \(k\) 阶点。(\(k\) 可以是实数)

    Lemma:第一次走到 \(k\) 阶点,且两人都没有踏上过 \(\ge k\) 阶点,必败。

    使用数学归纳法,若是直径端点显然成立,另一人只需走直径,他就无路可走。
    否则,此时另一人可以同样走到 \(k\) 阶点,那么他也不能再走到 \(\le k\) 阶点,而走到 $ > k$ 阶点的情况由归纳假设知必败。

    能力所限就只能写到这里啦

  • 相关阅读:
    python使用win32api截图并回收资源
    tesseract-ocr的安装及使用
    python识别图片文字
    Python中CreateCompatibleDC和CreateBitmap造成的内存泄漏
    Python调用windows API实现屏幕截图
    turtle库常用函数
    Python3.6安装turtle模块
    Python中的截屏模块 pyscreenshot
    Python实现屏幕截图的两种方式
    观察者模式(Observer Pattern)
  • 原文地址:https://www.cnblogs.com/Kelvin2005/p/15913730.html
Copyright © 2020-2023  润新知