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
篇幅过长,单独开一篇,点这里