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只动物,为同族时必败,否则必胜
输出就很简单了,不讲了。