HDU 6418 Rikka with Stone-Paper-Scissors(期望)

256 篇文章 0 订阅

Description

X X 分别会出A,B,C次石头剪刀布,每次随机出, Y Y 会出a,b,c次石头剪刀布,而 Y Y 知道A,B,C值也知道 X X 随机出,赢一次得一分,输一次减一分,问后手得分期望最大值

Input

第一行一整数T表示用例组数,每组用例输入六个整数 A,B,C,a,b,c A , B , C , a , b , c

(1T104,0A,B,C,a,b,c109,A+B+C=a+b+c>0) ( 1 ≤ T ≤ 10 4 , 0 ≤ A , B , C , a , b , c ≤ 10 9 , A + B + C = a + b + c > 0 )

Output

输出后手得分期望最大值,以最简分数形式输出

Sample Input

4
2 0 0
0 2 0
1 1 1
1 1 1
1 0 0
0 0 1
123 456 789
100 200 1068

Sample Output

2
0
-1
3552/19

Solution

Y Y 出剪刀得分的期望为a(CB)n,其余同理,故 Y Y 随机出的得分期望为a(CB)+b(AC)+c(BA)n,用数学归纳法证明这是最大值,令 F(n,A,B,a,b) F ( n , A , B , a , b ) 表示 X X A,B,nAB个剪刀石头布, Y Y a,b,nab个剪刀石头布, Y Y 得分期望最大值

n=1时显然成立,假设对于 1 1 ~n1时均成立,假设 Y Y n次出剪刀,那么后手得分期望为

AnF(n1,A1,B,a1,b)+Bn(F(n1,A,B1,a1,b)1)+nABn(F(n1,A,B,a1,b)+1) A n F ( n − 1 , A − 1 , B , a − 1 , b ) + B n ( F ( n − 1 , A , B − 1 , a − 1 , b ) − 1 ) + n − A − B n ( F ( n − 1 , A , B , a − 1 , b ) + 1 )

拆开即与 a(CB)+b(AC)+c(BA)n a ( C − B ) + b ( A − C ) + c ( B − A ) n 相同, Y Y 出石头和布同理,故Y无论怎么出其得分期望值不变

Code

#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
int T,A,B,C,a,b,c;
ll gcd(ll x,ll y)
{
    return y?gcd(y,x%y):x;
}
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d%d%d%d",&A,&B,&C,&a,&b,&c);
        ll p=(ll)a*(C-B)+(ll)b*(A-C)+(ll)c*(B-A),q=(ll)A+(ll)B+(ll)C;
        ll g=gcd(p<0?-p:p,q);
        p/=g,q/=g;
        if(!p)printf("0\n");
        else if(q==1)printf("%lld\n",p);
        else printf("%lld/%lld\n",p,q);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值