A#G/C013
A Sorted Arrays
不会/kk
B Hamiltonish Path
我是傻逼
如果一条路径不合法,那么把不合法的端点向没出现过的相邻点连过去救星了
C Ants on a Circle
我是傻逼
显然最后的位置可以直接求出,环上相对位置不变。
然后要确定一个位置的答案
假设每个蚂蚁手上有一只鸡,鸡的数字递增相遇就交换手上的鸡,不改变方向
那么蚂蚁1如果向右走,由于相对位置不变每交换一次鸡的数字会增加1
交换鸡的次数就是蚂蚁1碰到其他蚂蚁的次数,可以直接算出来
D Piling Up
每次操作球的变化量最多是1,可以dp记录每次的黑球量,然而有重复,多加一维记第二维是否触底就行了
E Placing Squares
首先可以容斥,(F_i=f(x_i)-sum_{j<i}f(x_i-x_j)F_j)
(f(x))就是长度为(x)的区间分正方形的权值和
打表发现是http://oeis.org/A033453然后可以矩乘优化转移
(f)递推式是(f_i=sum_{j<i}(i-j)^2f_j)
考虑平方的意义就是区间内放两个球的方案数所以可以(f[0/1/2])表示放了几个球,也可以矩乘优化
F Two Faced Cards
神仙题
首先离散化(C),按照(C)离散化(A,B),现在(C=[1-(n+1)]),(A,B)离散化了意义不变
搞一个(c)数组,初始是(c_i=-1),然后默认所有牌选正面,就是让(c_{A_i}++)
还要加上来一张牌,如果那张牌选上来的数字是(x),再把一个(c_x++),要求能配对的条件是所有前缀和(ge 0)
那么不考虑新的那张牌,前缀和应该是(1-(x-1))这段(ge 0),(x-n)这段(ge -1)
然而你全选正面很可能不合法,这个时候就要把一些正面换成反面
首先让所有前缀和(ge -1),从右往左腾讯(我也不知道为啥从左往右捕星)如果(S_i<-1)就选一个左端点最小的区间([B_i,A_i))加上(1)
再从左往右如果(S_i<0)就选右端点最大的区间,可以得出每个(ans_i),表示(1-(i-1))这段(ge 0),(i-n)这段(ge -1)最多用多少正面