AtCoder Grand Contest 049

C

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

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

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

若不删除任何球,根据结论1,添加球数应为没有被破坏的\(A_i\le B_i\)机器人数量(这里的破坏是指被\(A_j>B_j\)破坏)
同理,若删除球,令被删除的最大编号为\(k\)(显然应满足\(A_i\le 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 ,{m\choose 2}\);对于\(i>m\),相当于选择物品\(1,3,6,\cdots ,{n-m+1\choose 2}\)
由于题目对总和有限制,故有效物品个数为\(O(\sqrt{M})\)

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

总复杂度\(O(M\sqrt{M})\)

E

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

posted @ 2020-11-15 10:01  Grice  阅读(217)  评论(0编辑  收藏  举报