zoukankan      html  css  js  c++  java
  • Coders' Legacy 2020 题解

    多测不清空,爆零两行泪。
    多测不清空,爆零两行泪。
    多测不清空,爆零两行泪。
    后缀数组常数好大啊。
    后缀数组常数好大啊。
    后缀数组常数好大啊。

    Chef vs Doof

    略。


    Doof on Cartesian

    略。


    Doof fires Brackets

    为啥这题询问不也给一个 (O(n)) 的范围啊。


    Jeremy gets a gift

    bfs 都能写挂,真有我的。


    Unique Substring

    考虑用后缀数组求一下 (rk)(ht) 数组,然后就是个二维数点。
    好玩的事情发生了,我跑一组 (5*10^5) 的只要一点几秒,跑 (10^5)(5) 的半分钟跑不出来,长教训了。


    Perry learns Binary

    (or) 操作是经典的线段树操作,对于查询给每个线段树节点套上一个 (trie) 就行。
    多测不清空,爆零两行泪。


    Phineas and Marks

    博弈论好难啊,先鸽着,学会了再更新。
    这个博主他没有鸽!!1
    u1s1,慢慢分析找规律并不是很难...
    这个问题是海盗分金问题加强版,分类标签是找规律和瞪眼法观察。下面阐述一下慢慢分析的过程。
    题意简述:

    (n) 个人,要分 (m) 个球,还会给出一个 (k), 要决定一个头领来分配球。
    假设当前标号最大的人是头领,他会提出一个分配方案,每个人可以支持或者反对。
    如果支持率达到了 (50\%),这个人就成为头领,方案也被采用。
    如果支持率不到 (50\%),那么标号最大的 (k) 个人就会被干掉,如果不足 (k) 个人就会干掉所有人。
    每个人想在保证自己不被干掉的情况下拿到尽量多的球,并在拿到尽量多的球的情况下干掉尽量多的人。
    问最后的头领是谁,他自己最多能拿到几个球。
    (n,m,kle10^9)

    解题思路:
    分 类 讨 论。

    (Large{Ⅰ.nle2*k:})

    (large{①.nle k:})

    显然答案是 ((n,m))

    (large{②.k<nle2*k:})

    显然答案是 ((n,m))

    (Large{Ⅱ.2*k<nle2*(k+m):})

    可以通过抵消干掉 (2*k) 个,所以剩下 (n-2*k) 个中要贿赂 (lceilfrac{n-2*k}{2} ceil) 个来保命,最后答案是 ((n,m-lceilfrac{n-2*k}{2} ceil))

    (Large{Ⅲ.2*(k+m)<n:})

    这个需要讨论细一点观察出规律。

    大概有这么一个规律。
    (large{①nin[2m+2^ik+1,2m+(2^{i+1}-1)k]:})

    这个时候第 (n) 个一定不是领队,需要找到一个 (X),使得 (n-X*k) 不在这个范围中,此时 (n-X*k) 要么在上面的情况中,要么就在下面的情况中,可以成为领队。

    (large{②nin[2m+(2^{i+1}-1)k+1,2m+2^{i+1}k]:})

    这个时候第 (n) 个一定是领队,因为标号在 ([2m+2^ik+1,2m+(2^{i+1}-1)k]) 中的人会无条件投给他,他只需要贿赂之前的人即可。

    这样,我们就在 (O(log n)) 的时间内解决了这个问题。

  • 相关阅读:
    iOS项目中的网络请求和上下拉刷新封装
    iOS 自定义转场动画浅谈
    python中通过xlwt、xlrd和xlutils操作xls
    Python: PS 滤镜--水波特效
    Python: PS 滤镜--旋涡特效
    Python: PS 滤镜--USM 锐化
    Python: PS 滤镜--素描
    Python: PS 图像调整--饱和度调整
    Python: PS 图像特效 — 模糊玻璃
    Python: PS 滤镜--表面模糊
  • 原文地址:https://www.cnblogs.com/ldxcaicai/p/13323531.html
Copyright © 2011-2022 走看看