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
  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9507725.html
Copyright © 2011-2022 走看看