数学方法转化限制条件(使大于小于等于号左右互为相反数,变成绝对值)+加减交错法构造博弈论下界推出最优解再用限制代入:AT_agc056_d

https://vj.imken.moe/contest/600552#problem/G

考虑对题目进行转化

L ≤ S a ≤ R L \le S_a \le R LSaR

2 L ≤ 2 S a ≤ 2 R 2L\le 2S_a \le 2R 2L2Sa2R

2 L + S b ≤ S a + S ≤ 2 R + S b 2L+S_b\le S_a+S\le 2R+S_b 2L+SbSa+S2R+Sb

2 L − S ≤ S a − S b ≤ 2 R − S 2L-S\le S_a-S_b\le 2R-S 2LSSaSb2RS

2 L ≤ S + S a − S b ≤ 2 R 2L\le S+S_a-S_b\le2R 2LS+SaSb2R

L − R ≤ S − ( L + R ) + S a − S b ≤ R − L L-R\le S-(L+R)+S_a-S_b\le R-L LRS(L+R)+SaSbRL

x = S − ( L + R ) x=S-(L+R) x=S(L+R)

∣ x + S a − S b ∣ ≤ R − L |x+S_a-S_b|\le R-L x+SaSbRL

转化后得新题意:

给定 x x x,先手加,后手减,求绝对值最小。

考虑 x = 0 x=0 x=0,显然下界为 ( a 2 − a 1 ) + ( a 4 − a 3 ) + ( a 6 − a 5 ) + . . . (a_2-a_1)+(a_4-a_3)+(a_6-a_5)+... (a2a1)+(a4a3)+(a6a5)+...,从博弈论的角度来思考,下界是可以取到的。

但有了 x x x 的限制呢?如果直接加,显然是错误的,因为我们默认Alice取了 x x x,但可能是Bob取了(?)。但我们可以搞到 a a a 里面。枚举一个 a i + = x a_i+=x ai+=x,然后排序后照做,取最小值即可。

	n=read(); L=read(); R=read(); mn=1e18; 
	for(i=1; i<=n; ++i) a[i]=read(), S+=a[i]; 
	x=S-(L+R); 
	for(j=1; j<=n; ++j) {
		ans=0; 
		for(i=1; i<=n; ++i) b[i]=a[i]; 
		b[j]+=x; sort(b+1, b+n+1); 
		for(i=1; i<=n; i+=2) ans+=(b[i+1]-b[i]); 
		mn=min(mn, ans); 
	}
	printf(mn<=R-L ? "Alice" : "Bob"); 

你可能感兴趣的:(博弈论,加减交错法)