CF925C

Posted grice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF925C相关的知识,希望对你有一定的参考价值。

题意

对于一个数组A,通过一个变换为B数组:
(B_1=A_1)(B_i=A_ioplus A_{i-1}(iin(1,n]))
现在给定一个B数组,但其已经被打乱了,能否将其重排列满足逆变换后A数组递增

做法

假设B数组已经重排列好了,即(A_k=igopluslimits_{i=1}^k B_i),满足A数组递增即为(forall kin[1,n),igopluslimits_{i=1}^k B_i<igopluslimits_{i=1}^{k+1}B_i)
满足其的充要条件为(forall kin[1,n),B_{k+1})最高位对应在(igopluslimits_{i=1}^k B_i)(0)

先给出一个做法,后面再说正确性
令集合(S_i)(B_k)最高位为(i)的元素集合
考虑一个一个元素排列,令(sum)为已经确定的前缀异或和,然后(i=1sim logV)贪心找(S_i)是否合法,若合法随意取一个元素加入排列,然后从(S_i)中移除

正确性:
若有满足条件的重排列(B),可以通过调整成贪心的排列







以上是关于CF925C的主要内容,如果未能解决你的问题,请参考以下文章

[Codeforces 925C]Big Secret

Codeforces925C Big Secret 构造贪心

关于安排

CF 爆发者

[CF930E]/[CF944G]Coins Exhibition

CF怎么改名