zoukankan      html  css  js  c++  java
  • AtCoder Grand Contest 049

    C

    结论1:假设答案为(0),容易证明对于机器人(i)(A_ile B_i)),一定是由(A_j>B_j(A_i<A_j))的机器人破坏

    在进行下一步分析前,为了方便解决该问题,我们将题意中操作进行一些转化:
    结论2:在不改变答案的情况下,可以将问题转化为:可以任意删除球、添加球,最小化(max(删除球数,添加球数))

    证明:
    在原问题的基础上,显然是可以达到删除球的效果,只需要将一个球上的数字重写为非常大的数字即可
    而添加球,我们的目的显然是破坏现在该机器人前面的机器人,那么可以将那个机器人的编号球重写为这个机器人的编号
    而删除球与添加球中是可以相互抵消以达到效果相同操作最少,容易证明操作最少为(max(删除球数,添加球数))

    若不删除任何球,根据结论1,添加球数应为没有被破坏的(A_ile B_i)机器人数量(这里的破坏是指被(A_j>B_j)破坏)
    同理,若删除球,令被删除的最大编号为(k)(显然应满足(A_ile B_i)),则应删除(B_i-A_i+1)个,添加的球数应为除去(le k)机器人影响的情况,即转化为不删除任何球的情况

    D

    考虑最小的数字位置,令其为(m)(若有多个选择最小的一个)
    可以发现可达序列通过如下方式达到

    • 令最终(m)位置的数字为(C),初始时序列为({C,C,cdots ,C})
    • 选择(i<m),分别添加(1,2,3,cdots,i)(a_i,a_{i-1},a_{i-2}cdots ,a_1)(为保证(m)位置为最小的,至少对(i=m-1)操作一次)
    • 选择(i>m),分别添加(1,2,3,cdots,n-i+1)(a_i,a_{i+1},a_{i+2}cdots ,a_n)

    对于(i<m),相当于选择物品(1,3,6,cdots ,{mchoose 2});对于(i>m),相当于选择物品(1,3,6,cdots ,{n-m+1choose 2})
    由于题目对总和有限制,故有效物品个数为(O(sqrt{M}))

    考虑(m)的位置发生变化时,可以(O(M))退背包
    由于至少对(i=m-1)操作一次,由于总和的限制,仅需考虑前(O(sqrt{M}))个位置

    总复杂度(O(Msqrt{M}))

    E

    篇幅过长,单独开一篇,点这里

  • 相关阅读:
    xcode构建webdriverAgent时报错Messaging unqualified id的解决办法
    ubuntu18.0安装RabbitMQ
    python中*的用法
    Jenkins构建项目
    Jenkins安装与配置
    git_仓库
    六、 Shell数组应用
    五、 Shell函数应用
    三、 Shell流程控制
    二、 Shell变量定义
  • 原文地址:https://www.cnblogs.com/Grice/p/13975801.html
Copyright © 2011-2022 走看看