CF1110E Magic Stones 做题记录

一次操作选择1<i<n1<i<n,使cic_i变为cic_i'ci=ci+1+ci1cic_i'=c_{i+1}+c_{i-1}-c_i

是否能做若干次操作,使每个cic_itit_i相等?

2n105,0ci2109,0ti21092\le n\le 10^5, 0\le c_i\le 2*10^9, 0\le t_i\le 2*10^9

首先遇到这种序列操作的题,肯定要考虑原序列、差分序列和前缀后缀和序列。

那么原序列似乎规律,那么观察差分序列。设 ai=ci+1cia_i=c_{i+1}-c_i,那么一次 ci=ci1+ci+1cic_i=c_{i-1}+c_{i+1}-c_i 的操作相当于让 ai1=ci1+ci+1cici1=ci+1ci=aia_{i-1}=c_{i-1}+c_{i+1}-c_i-c_{i-1}=c_{i+1}-c_i=a_iai=ci+1(ci1+ci+1ci)=cici1=ai1a_{i}=c_{i+1}-(c_{i-1}+c_{i+1}-c_i)=c_i-c_{i-1}=a_{i-1},也就是交换 aia_{i}ai1a_{i-1}

那么本题就变得就很简单了,特判掉 c1=t1,cn=tnc_1\not=t_1,c_n\not=t_n 的情况,排序即可。