0%

2018icpc南京A题

A题题意:有一长度为N的连续序列,A与B交替从序列中取一段连续序列,每次取的序列长度为1-K,当某个人进行选择时,序列为空,则另一人获得胜利,A先进行选择,输入获胜者。
样例:

Input Output
1 1 A
9 3 A

第一遍读题出现了错误,理解为序列会进行合并,采取了不理智的做法,直接吃了一发WA
第二遍读懂题目,发现是个基础的博弈,因为是A先选取,所以只要A在选取的时候,使得剩下的段为对称的,那每次B选取一段,A便选取相之对称的段,则A必获得胜利。所以我们考虑,当K>=2时,我们不管N为多大,我们都可使得A获得胜利(当N<=2,A直接取完,当N>2时,若N为奇数,我们在序列中间取1,使得剩下的段为对称的,若N为偶数,在中间取2使得段落变为对称),当k为1时,我们只需判断N的奇偶性便可确定谁最终胜利。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace std;
int main() {
int n,k;
while(~scanf("%d%d",&n,&k))
{
if(k>=2)
printf("Adrien\n");
else
if(n&1)
printf("Adrien\n");
else
printf("Austin\n");

}
return 0;
}