最近开始补cf题,尽可能补完所有div2+edu,fft啥的可能不会补(
A
模拟不解释
B
发现这个过程相当于你每次找到一个数在原序列中左边第一个大于它的数,问跳几次能跳到max
然后我就写了个单调栈(
被教育了一波发现倒着for一for就好了,wssb
C
首先正负分开考虑
不难发现如果强制回原点,则每次选最远的k个最优
然后你能免一次,那么直接把这次减去就行
(这里顺序无所谓,所以我可以最后再放最远的k个)
D
orz dls
先考虑排列
定义排列的奇偶性为add(i,a[i])之后 n-环的个数 的奇偶性
理解一下发现swap两个数之后排列奇偶性会变(证明就如果i,j原来在同一个环上,该环则会被拆成两个环,如果不在,则i,j会被合到一个环上)
一次环相当于swap(i,j),swap(j,k),则奇偶性不变
又因为1,2,3,...,n是偶的(n-n=0),则必要性证完了
充分性鸽了(
然后考虑有重复数字,你先把它当做无重复做,然后由于你至少有一个重复,所以你可以任意调整“排列”的奇偶性,所以一定是YES