2020-2021 ICPC Southeastern European B. Reverse Game(思维,博弈)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-2021 ICPC Southeastern European B. Reverse Game(思维,博弈)相关的知识,希望对你有一定的参考价值。

LINK

由于终止状态一定是

0000000…1111111

然后观察操作 110 , 110 , 1010 110,110,1010 110,110,1010都相当于把 1 1 1往右移动了两个格子,而 10 10 10只是把 1 1 1往右移动了一个格子

在未到达终止状态之前,一定可以执行操作 10 10 10,也就是使逆序对减少 1 1 1,这个很好理解

而且在逆序对大于等于 2 2 2时,一定可以执行 110 , 100 , 1010 110,100,1010 110,100,1010之一

证明如下

如果原串中只有一个 1 1 1不在后缀位置,那么这个 1 1 1后面一定有大于等于 2 2 2 0 0 0才能满足逆序对大于等于 2 2 2,即存在 100 100 100

否则,如果原串中有多个 1 1 1不在后缀位置,可以分解为存在若干个区间 [ l i , r i ] [l_i,r_i] [li,ri]为连续的 1 1 1,因为这段 1 1 1不在后缀位置所以 r i + 1 = ′ 0 ′ r_{i+1}='0' ri+1=0

当存在 r i − l i + 1 > = 2 r_i-l_i+1>=2 rili+1>=2 r i − 1 r i r i + 1 = 110 r_{i-1}r_ir_{i+1}=110 ri1riri+1=110,满足

若每一段连续的 1 1 1长度都为 1 1 1,若存在某个 i i i满足 r i + 1 = r i + 2 = ′ 0 ′ r_{i+1}=r_{i+2}='0' ri+1=ri+2=0,说明存在 r i r i + 1 r i + 2 = 100 r_ir_{i+1}r_{i+2}=100 riri+1ri+2=100,满足

否则,每一个 1 1 1之间只用一个 0 0 0分割开,又要满足逆序对大于等于 2 2 2,必然存在 101 101 101

结论

所以当逆序对 I I I 3 3 3的倍数时,显然 B o b Bob Bob获胜

因为 A l i c e Alice Alice让逆序对减 1 1 1那么 B o b Bob Bob就让逆序对减 2 2 2,反之亦然

当逆序对 I I I不为 3 3 3的倍数时,显然 A l i c e Alice Alice获胜

因为 A l i c e Alice Alice第一次可以让逆序对减 I % 3 I\\%3 I%3,这样胜负状态就转换了

g根据上面的推论,可以知道在任何时刻都可以执行两种操作

#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e6+10;
#define int long long
char a[maxn];
signed main()
{
	cin >> ( a+1 );
	int ans = 0, res = 0, n = strlen( a+1 );
	for(int i=1;i<=n;i++)
	{
		if( a[i]=='1' )	res++;
		else	ans += res;
	}
	if( ans%3==0 )	cout << "Bob\\n";
	else	cout << "Alice\\n";
	return 0;
}

以上是关于2020-2021 ICPC Southeastern European B. Reverse Game(思维,博弈)的主要内容,如果未能解决你的问题,请参考以下文章

2020-2021 ICPC Southeastern European M. Mistake(模拟,拓扑排序)

L. Let‘s Play Curling[思维]——2020-2021 ACM-ICPC, Asia Nanjing Regional Contest

2020-2021 ICPC Southeastern European Regional E. Divisible by 3(前缀和,优化暴力)

2020-2021 ACM-ICPC Latin American Regional Programming Contest(F. Fascinating Partitions)

2020-2021 ACM-ICPC Latin American Regional Programming Contest(F. Fascinating Partitions)

2020-2021 ACM-ICPC Brazil Subregional Programming Contest E题 Party Company树上倍增+树状数组维护