//目录

Uva 1636 决斗

题目链接:https://vjudge.net/contest/157397#problem/A

题意:

轮子手枪,给出子弹的序列,0是没有子弹,1是有子弹,对手开了一枪没死,我可以继续开一枪,或者重转,我当然不想死,两种情况下如果不死的概率相等,输出EQUAL,求怎么决策?

 

条件概率:

(注意,刘汝佳大神这里写的有点问题,除号写成了 | )

意思是: 在条件 B 发生的情况下 A 发生的概率 = AB同时发生的概率 / B发生的概率。

在AB时独立事件时 P(AB) = P(A)*P(B);

 

 

题目中:

直接上一枪没死,就是条件概率。 等于 00/0

重转 0/len;

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     char str[205];
 8     while(~scanf("%s",str)) {
 9         int len = strlen(str);
10         int cnt0 = 0;
11         int cnt00 = 0;
12         for(int i=0;i<len;i++)
13         {
14             if(str[i]=='0')
15                 cnt0++;
16             if(str[i]=='0'&&str[(i+1)%len]=='0')
17                 cnt00++;
18         }
19 
20         double sh = cnt00*1.0/cnt0;
21         double ro = cnt0*1.0/len;
22 
23         if(sh>ro)
24             puts("SHOOT");
25         else if(sh<ro)
26             puts("ROTATE");
27         else puts("EQUAL");
28 
29     }
30     return 0;
31 }
View Code

 

posted @ 2017-04-05 20:15  小草的大树梦  阅读(262)  评论(1编辑  收藏  举报