2015 HDU 電腦學院 院賽 1003 玩骰子

來源:互聯網
上載者:User

標籤:

Problem Description  Nias與Ains都特別喜歡玩骰子,而且都自以為比對方玩得更溜。
  終於有一天,他們決定用骰子來一決高下!
  一般的骰子玩法已經不足以體現他們的水平了,於是他們自創了一套玩法來PK:
首先,每人擲3個骰子;之後,可以選擇其中一個骰子重新擲(當然也可以放棄這一步),最後,比較投擲結果的大小,結果大的那方獲勝,一樣的話為平局。
  大小比較規則為:
  三個一樣數位骰子稱為三條;兩個一樣數位骰子稱為對子;只有一個數位骰子成為散牌。三條>對子>散牌。當雙方結果都為三條時,直接比較三條數位大小;都有對子時,先比較對子數位大小,若相同,再比較剩下的骰子的數位大小;都只有散牌時,先比較最大的數位大小,若相同,再比較次大的數位大小,還相同,最後比較最小的數位大小。

  現在Nias已經投了3個骰子,還剩一次機會可以選擇其中一個骰子重新投(或不選),而且他已經知道了Ains的最後投擲結果,求Nias獲勝的機率有多大。 Input輸入資料第一行為一個整數T,表示有T組測試資料。
接下來T行,每行6個1~6的整數,前三個表示Nias第一次的投擲結果,後三個表示Aias最終的投擲結果。 Output請輸出Nias獲勝的機率,結果保留3位小數,每組輸出佔一行。 Sample Input42 3 5 3 3 43 3 1 2 2 26 2 1 5 4 31 2 3 4 4 1 Sample Output0.3330.1671.0000.000

暴力枚舉一下

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;int x[5],a[5],b[5];int T;int fz,fm;double ans;int flag;int tot;void copy(){    a[1]=x[1];    a[2]=x[2];    a[3]=x[3];}int cheak(){    sort(a+1,a+4);    sort(b+1,b+4);    int lva,lvb;    if(a[1]==a[2]&&a[2]==a[3]) lva=3;    else if(a[2]==a[3]||a[1]==a[2]) lva=2;    else lva=1;    if(b[1]==b[2]&&b[2]==b[3]) lvb=3;    else if(b[2]==b[3]||b[1]==b[2]) lvb=2;    else lvb=1;    if(lva>lvb) return 1;    else if(lva<lvb) return 0;    else if(lva==lvb)    {        if(lva==3)        {            if(a[1]>b[1]) return 1;            else return 0;        }        else if(lva==2)        {            if(a[2]>b[2]) return 1;            else if(a[2]<b[2]) return 0;            else             {                int u1,u2;                if(a[2]==a[3]) u1=a[1];                else u1=a[3];                if(b[2]==b[3]) u2=b[1];                else u2=b[3];                if(u1>u2) return 1;                else return 0;            }        }        else if(lva==1)        {            if(a[3]>b[3]) return 1;            else if(a[3]<b[3]) return 0;            else            {                if(a[2]>b[2]) return 1;                else if(a[2]<b[2]) return 0;                else                {                    if(a[1]>b[1]) return 1;                    else if(a[1]<b[1]) return 0;                    else return 0;                }            }            return 0;        }    }}int main(){    scanf("%d",&T);    while(T--)    {        scanf("%d%d%d %d%d%d",&x[1],&x[2],&x[3],&b[1],&b[2],&b[3]);        copy();        flag=cheak();        fz=flag;        if(fz) printf("1.000\n");        else if(fz==0)        {            ans=0;            fm=0;            for(int i=1;i<=3;i++)            {                tot=0;                for(int j=1;j<=6;j++)                {                    copy();                    a[i]=j;                    flag=cheak();                    tot=tot+flag;                }                if(tot==0) continue;                ans=max(ans,1.0*tot/6);            }            printf("%.3lf\n",ans);        }    }    return 0;}

 

2015 HDU 電腦學院 院賽 1003 玩骰子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.