【题解】P8700 题解

P8700 题解

思路分析

这道题是周期分析。

由于操作是三个圈一起操作,因此肯定是有周期的。

外圈有 1212 个,中圈有 88 个,内圈有 44 个。

于是以下的这几个就一定“绑定的”,即无论如何转来转去,调整来调整去,一定就是这几个颜色,不会变化。

  • 灰色道子上的那三个

  • 中圈最下面的那个(横着的)

  • 外圈最上面的那个位置往顺时针数 44 个棒,逆时针过 44 个棒。

然后判断是否存在 33 个外圈色(即绿), 22 个中圈色(即红),11个内圈色(即黄)即可,因为对于每一组“绑定的”棒,在外圈有 33个,在中圈有 22 个,在内圈有 11 个。

代码

for(int i = 0;i < 4;i++)
{
	memset(csp, 0x0, sizeof(csp)); //要清空
    //统计外圈上的
	csp[a[i]]++;
	csp[a[i + 4]]++;
	csp[a[i + 8]]++;
    //统计中圈上的
	csp[b[i]]++;
	csp[b[i + 4]]++;
    //统计内圈上的
	csp[c[i]]++;
	if(csp['Y'] != 1 || csp['R'] != 2 || csp['G'] != 3) //判断是否符合条件
	{ 
		cout << "NO" << endl;
		ok = false;
		break;
	}
}
if(ok) cout << "YES" << endl;
posted @ 2023-09-26 13:56  邻补角-SSA  阅读(5)  评论(0)    收藏  举报  来源