(紫书10.2.4)Headshot(概率)

题目链接

内网能进

题意:

一把手枪,里面是环形子弹,一共n个弹位,'0'表示弹位上没有子弹,'1'表示弹位上有子弹.你在打出一个空枪后,希望下一枪也是空枪,你有两种选择:

  • 继续开下一枪,也就是下一个位置
  • 转动弹位.开枪

分析:

继续开下一枪是一个条件概率,事件A表示"00"(开一枪为空下一枪也是空的),事件B表示"0?"(开一枪为空).而继续开一枪为空的概率为\(P(A)/P(B)\)
而转动弹位开枪概率为弹位中"0"的概率.

"00"个数为a,"0"的个数为b, 继续开枪为空的概率为a/b,转动弹位再开枪为空的概率b/n,
所以我们直接比较\(a*n\)和\(b*b\)的大小即可.

void solve()
{
	ll len=strlen(str);
	ll a=0,b=0;
	str[len]=str[0];
	for(int i=1;i<=len;i++){
		if(str[i]=='0'&&str[i-1]=='0') a++;
		if(str[i]=='0') b++;
	}
	if(a*len<b*b) puts("ROTATE");
	else if(a*len==b*b) puts("EQUAL");
	else puts("SHOOT");
}
posted @ 2021-06-10 20:36  `KingZhang`  阅读(61)  评论(0)    收藏  举报