UESTC 1261 被神选中的人 贪心法

被神选中的人

Time Limit: 5000/3000MS (Java/Others)     Memory Limit: 262144/262144KB (Java/Others)
Submit  Status

陈同学决定和同样无聊的同桌张同学玩一局有趣的游戏,来打发时间。

这游戏叫做《被神选中的人》.

陈同学非常熟练的从抽屉里拿出了一幅奇怪的扑克。

扑克牌中有n张红桃,在游戏中,被看作为神祗;有m张梅花,在游戏中,被视作恶魔;而里面也有一张方片A,这张卡,即代表被神选中的人,他叫

方片A。

游戏很简单,每回合,依次会从牌库中随机抽取两张牌,直到游戏结束。如果牌库中的牌不足两张,那么游戏直接结束。

当然,每次抽取两张牌会发生以下5种事件之一。

1、如果两张都为红桃,即神之相遇,什么事情都不会发生,将这两张牌重新洗进牌库。

2、如果两张都是梅花,即魔之相遇,两个恶魔均会死亡,那么就会将这两张牌拿走。

3、如果一张为红桃,一张为梅花,即神魔相争,神会死亡,而恶魔会存活。那么会将神牌拿走,将恶魔重新洗进牌库。

4、如果一张为方片A,一张红桃,即神之眷顾,这时候,方片A将会有两种选择,他必须选择其中的一个进行

4.1、弑神,那么神牌会拿走,而方片A会重新洗进牌库。

4.2、眷顾,神会祈福与方片A,什么事情都不会发生。这时候,两张牌都会被洗进牌库。

5、如果一张为梅花,一张为方片A,即遇魔,方片A将会死去,游戏结束。

正当陈同学和张同学想要开始玩的时候,何老师走了过来。。。

很显然,他们俩的小动作被老师发现了!

于是双双被罚,被罚去站在教室门口。

这时候,罚站的陈同学有了一个问题,问了问站在他旁边的张同学:“张同学,你知道里面方片A在采取最优策略的情况下,方片A有多大的概率能

一直活下去呢?"

张同学当然很快就回答出来了,而你知道吗?

为了使得答案更加有趣,你需要输出概率的倒数形式,并且保留恰好6位小数。

如果无论如何方片A都要死去,请输出:“too young,too simple"

Input

两个整数  n   m  表示这副奇怪的扑克有n张红桃,m张梅花

保证:

0<=n<=100000

0<=m<=100000

Output

输出恰好六位小数,表示这个方片A能一直活下去的概率的倒数。

如果无论如何方片A都不能活下去的话,请输出:“too young,too simple"

Sample input and output

Sample Input Sample Output
1 2
3.000000
1 1
too young,too simple

Hint

在第一个样例中,方片A,经过张同学的计算,他最终活下来的概率是1/3,那么将会输出3.000000

在第二个样例中,无论如何,总有某个时刻,将会抽出方片A和恶魔。所以方片A无论如何都将会死去。

请注意:请恰好输出6位小数,恰好,恰好!

Source

每周一题

My Solution

这个题目看上去好像很难,好多烟雾弹,参透其玄机则瞬解。
其实只和m张梅花有关。n张红桃则无关,随便怎么整,或者说用方块A全部弑神在说。
然后:
          1) 如果m%2==1显然 too young,too simple
2)如果m%2==0,则从m=2开始讨论,这个时候有m1、m2,所以2梅花为一种情况,而方块A可以和m1、m2,所以2种情况,
故1/3
m=4时,有m1、m2、m3、m4.所以2梅花有3、2、1共6中,方块A和m1、m2、m3、m4 共4种,则6/(6+4)然后下一步就和上面一样了
故再乘1/3得1/5
m=6是同样讨论,把m视为不同,即m1、m2、m3、m4、m5、m6,这时为1/7
所以概率为1/(m+1),然后取倒数就是m+1了

1、先放在int然后输出的时候用(float)m+1

#include <cstdio>
using namespace std;
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2){
        if(m%2) printf("too young,too simple\n");
        else printf("%.6f\n",float(m+1));
    }
    return 0;
}

2、由于觉得好玩,小优化了,一下,用"%d.000000"

#include <cstdio>
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2){
        if(m%2) printf("too young,too simple\n");
        else printf("%d.000000\n",m+1);
    }
    return 0;
}

谢谢

你可能感兴趣的:(ACM,ICPC,OJ,uestc,贪心法,博弈策略)