CF 1008 Div2
A
显然最终结果跟怎么操作无关,所以直接比较n*x是否等于sigma(a)即可。
B
猜测答案必然是1。
由于条件很弱,最终显然是引向n和n-1的二元环。
当k=1时,我们可以让所有的指向n,n指向n-1。这对于所有的奇数都是有效的。
k为偶数时可以颠倒一下,所有的指向n-1,n-1指向n。
C(DIV1A)
首先,排个序,方便处理。
你可能会认为a1或者其他奇数项是被删掉的那个数(记为x),但你会发现那样并不能保证x没有出现过。
但如果x是a2,那么x=a1+a3-a4+a5...,只要令偶数项为小的那些数,那么x>a1+a3>a1,构造成功。
D
显然我们要尽可能往乘法那边分配,并且要尽可能是大的乘法。
是否可以贪心按照最近的不平等位置进行决策呢?其实是的,因为只要遇到了乘法,你就可以把大于等于这条路线的人数全部放到对面去,即使遇到两次需要不同路线的情况,也不会影响到后面的决策。
所以只需要对于每一关,记录一下最近的不平等的位置和对应的正确选择即可。
E(DIV1B)
显然x和y具体是啥并不重要,重要的只是每一位是几个1,这个值可以是0-2。
这就等同于一个三进制的问题被强行挤压到了二进制之中,因此显然出现了损耗(进位)。
为了防止数据丢失,我们显然得问一个0。
接下来就很关键了,思考一下如果还有两次机会可以怎么做。
你会发现关键问题就是进位,因此必须构造一个不存在进位的情况,如果是4进制就不会出现进位了。
我们可以询问1010...和0101...,然后和0的答案相减,再取反,这样就消除了进位的问题。
好了,现在改成一次询问该怎么办?
其实1010...是不必要的,因为当你问了0101...之后,得出了所有偶数位,就可以从0的答案之中减去这些位,从而将奇数位隔开。
得到所有位之后就不必多说了。
TODO:FG DIV1DFG
Comments
Post a Comment