2018.08.08【2018提高组】模拟A组题解 没有硝烟的战争

T1:

没有硝烟的战争 

题目描述:

被污染的灰灰草原上有羊和狼。有N只动物围成一圈,每只动物是羊或狼。
该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x+K]区间的整数,游戏按顺时针方向进行。每只动物报的数字都不能超过M。若一只动物报了M这个数,它所在的种族就输了。问以第i只动物为游戏的开始,最后哪种动物会赢?

输入

第一行输入三个正整数N,M,K。
接下来一行N个正整数,分别表示N只动物的种类,以顺时针的方向给出。0代表羊,1代表狼。

输出

一行输出N个整数,表示若从第i只动物开始,赢的动物的种类。同上,0代表羊,1代表狼。

样例输入

Input 1
2 9 2
0 1
Input 2
6 499 5
1 0 0 1 1 0
Input 3
10 100 10
0 0 0 1 1 1 1 0 1 1

样例输出

Output 1
0 1
Output 2
0 1 1 1 1 0
Output 3
1 1 1 1 1 1 1 1 1 1

【数据范围】

对于60%的数据,1 ≤ N, M, K ≤ 500。
对于100%的数据,1 ≤ N, M, K ≤ 5000。

题解:DP

设f[i,j]为第i只动物报了j,其种族是否能赢,0表示不能,1表示能,s[i,j]表示f[i,j]到f[i,m]的和。

初始值为f[i,m]=0。

如果第i只动物报了j,那么第i+1只动物能报j+1~j+k,如果f[i+1,j+1~j+k]有一个为1,即第i+1只动物报j+1~j+k有必胜策略,如果i与i+1是同族,则第i只动物报j,其种族能胜,否则必败

如果f[i+1,j+1~j+k]都是0,即第i+1只动物无必胜策略,则第i只动物,为同族时必败,否则必胜

输出就很简单了,不讲了。

你可能感兴趣的:(比赛TJ,DP)