zoukankan      html  css  js  c++  java
  • hdu 6418(石头剪刀布 **)

    题意是说双方各有剪刀,石头和布的卡片各 a,b,c,a‘,b',c' 张,对方是随机选择,问我方的最大预期得分。

    这道题目一开始看到的时候感觉没有头绪,再次读题,发现题目说结果可能是分数,如果是分数的话就输出最简分数......

    这时候突然感到奇怪,为什么会有分数呢?加之题目中说到的对方是随机选择,会不会是每种卡片的出现概率?用唯一出现的一组结果是分数的样例,发现分母可以整除卡片数目和,那么分母就很可能是卡片数目和。从这一点来(继续)猜测,得到样例 2 0 0,0 2 0;1 1 1,1 1 1;1 0 0,0 0 1;123 456 789,100 200 1068 的结果的分母应该分别是 2,3,1,1368,再由样例给出的结果,分子应该分别是 4,0,-1,255744,再由给出的样例,应该结果是卡片出现的概率作了 pa--pb', pb--pc',pc--pa',pa'--pb,pb'--pc,pc'--pa 这样几组乘积,然后将胜利的总和减去失败的总和。还要注意的是分子可能是负数,本人就直接求了分子和分母的最大公因数,然后分别去除以最大公因数,导致分母变成了负数,要多加一步判断负数的符号只能出现在分子上。这里基本没有逻辑的分析,完全是胡乱猜测,还是等其他的高人的真*分析吧。(a了这题感觉又折损了不少运气.......)

    代码如下:

     1 #include <cstdio>
     2 #include <cmath>
     3 #include <algorithm>
     4 using namespace std;
     5 __int64 ans,sum;
     6 __int64 gcd(__int64 a,__int64 b)
     7 {
     8     if(b==0)return a;
     9     return gcd(b,a%b);
    10 }
    11 void fin()
    12 {
    13     __int64 s = gcd(ans,sum);
    14     ans/=s;
    15     sum/=s;
    16     if(sum<0) {sum*=-1; ans*=-1;}
    17     printf("%I64d/%I64d
    ",ans,sum);
    18 
    19 }
    20 int main()
    21 {
    22     int t;
    23     __int64 a,b,c,aa,bb,cc;
    24     scanf("%d",&t);
    25     while(t--)
    26     {
    27         scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&aa,&bb,&cc);
    28         sum = a+b+c;
    29         if(sum == 0)
    30         {
    31             puts("0");
    32             continue;
    33         }
    34         ans = (aa*c+bb*a+cc*b-aa*b-bb*c-cc*a);
    35         if(ans%sum==0)
    36         {
    37             ans/=sum;
    38             printf("%I64d
    ",ans);
    39         }
    40         else fin();
    41     }
    42     return 0;
    43 }
    View Code
    日后若能有更好的想法,再来完善。 希望看到的大神不吝赐教 orz
  • 相关阅读:
    Vim step by step
    Ubuntu解压命令全览
    这样才能使本地Mysql服务允许被外部主机连接(两步)
    [Python] logging.logger
    Python Selenium
    MySQL中char、varchar和text的区别
    Way to MongoDB
    Python误区之strip,lstrip,rstrip
    Android Studio Tips
    Way to tmux
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9507725.html
Copyright © 2011-2022 走看看