uva 1636 - Headshot(简单概率问题)

直接扣一枪没有子弹 是条件概率

转一下再扣一枪 是简单事件发生的概率

前者用00的个数除以00和01子串的总数

后者用0的个数除以所有数字的个数

然后换算一下运算方式比较即可

#include<cstdio>
#include<cstring>

const int maxn = 105;
char s[105];
int cnt0,cnt1,cnt2,cnt3;
int main()
{
    while(scanf("%s",s+1)!=EOF)
    {
        cnt0=0;
        cnt2=0;
        cnt3=0;
        int len=strlen(s+1);
        s[0]=s[len];
        s[len+1]=s[1];
        for(int i=1;i<=len;i++)
        {
            if(s[i]=='0')
            {
                cnt0++;
                if(s[i+1]=='0')
                    cnt2++;
                if(s[i+1]=='1')
                    cnt3++;
            }
        }
        if(cnt2*len==cnt0*(cnt2+cnt3))
            printf("EQUAL\n");
        else if(cnt2*len>cnt0*(cnt2+cnt3))
            printf("SHOOT\n");
        else
            printf("ROTATE\n");
    }
    return 0;
}

uva 1636 - Headshot(简单概率问题)

时间: 2024-11-29 05:25:57

uva 1636 - Headshot(简单概率问题)的相关文章

UVa 1636 - Headshot(概率)

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4511 题意: 首先在手枪里随机装一些子弹,然后抠了一枪,发现没有子弹.你希望下一枪也没有子弹,是应该直接再抠一枪(输出SHOOT)呢,还是随机转一下到任意位置再抠(输出ROTATE)?如果两种策略下没有子弹的概率相等,输出EQUAL.手枪里的子弹可以看成一个环形序列,开枪一次以后对

UVA 1636 Headshot 概率

Headshot Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description You have a revolver gun with a cylinder that has n chambers. Chambers are located in a circle on a cylinder. Each chamber can be empty or can

uva 1636 Headshot

https://vjudge.net/problem/UVA-1636 首先在手枪里随机装一些子弹,然后抠了一枪,发现没有子弹.你希望下一枪也没有子弹,是应该直接再抠一枪(输出SHOOT)呢,还是随机转一下再抠(输出ROTATE)?如果两种策略下没有子弹的概率相等,输出EQUAL. 手枪里的子弹可以看成一个环形序列,开枪一次以后对准下一个位置.例如,子弹序列为0011时,第一次开枪前一定在位置1或2(因为第一枪没有子弹),因此开枪之后位于位置2或3.如果此时开枪,有一半的概率没有子弹.序列长度为

POJ 3071 Football(简单 概率DP)

Football 原文链接:http://blog.csdn.net/xuechelingxiao/article/details/38520105 大意:2^n 个球队进行单场淘汰赛,每两只球队之间比赛会有胜负的概率,问最后谁夺冠的概率最大. 思路:简单的概率DP问题,主要是怎么处理哪两个球队比赛的问题. DP方程为 dp[i][j] = ∑(dp[i-1][j]*dp[i-1][k]*p[j][k]); //dp[i][j]表示第 i 轮的时候,第 j 支队伍赢的概率.. 对于其中位运算,可

UVA 12230 - Crossing Rivers(概率)

UVA 12230 - Crossing Rivers 题目链接 题意:给定几条河,每条河上有来回开的船,某一天出门,船位置随机,现在要求从A到B,所需要的期望时间 思路:每条河的期望,最坏就是船刚开走3L/V,最好就是直接上船L/V,期望为4L/V/2 = 2L/V,然后在算上陆地上的时间,就是答案 代码: #include <stdio.h> #include <string.h> int n; double d, p, l, v; int main() { int cas =

UVa 725 Division --- 简单枚举

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666 /* UVa 725 Division --- 简单枚举 */ #include <cstdio> #include <cstring> bool used[10]; /* 判断传进来的两个数是否满足条件 */ bool judge(int a, i

Aeroplane chess(简单概率dp)

Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled from 0 to N. Hzz starts at grid 0. For each step he throws a dice(a dice have six faces with equal probability to face up and the numbers on the faces are 1,2,3,4,5,6). Whe

简单概率DP——hdu4405

题目描述: Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled from 0 to N. Hzz starts at grid 0. For each step he throws a dice(a dice have six faces with equal probability to face up and the numbers on the faces are 1,2,3,4,5,6

uva 10529 - Dumb Bones(概率+区间dp)

题目连接:uva 10529 - Dumb Bones 题目大意:给定n,表示要放n个骨牌,每次放下骨牌,有可能向左倒的概率为pl,向右倒的概率为pr,如果倒下,会将那一侧的骨牌全部推倒,可以选择位置先后放骨牌,问说一种放骨牌次数最少的期望是多少. 解题思路:dp[i]表示放i个骨牌需要的步数期望,维护一个最优放的位置,dp[i] = min\{ (从i-1到i的步数)} + (0到i-1的步数)} (从i-1到i的步数):dp[i?j?1]?pl+dp[j]?pr+11?pl?pr (0到i-