zoukankan      html  css  js  c++  java
  • bzoj1867钉子和小球

    题目链接

    简单$DP$

    $$dp[1][1]=1( ext{显然})$$

    $$map[i][j]=='*'?dp[i+1][j]+=dp[i][j]/2,dp[i+1][j+1]+=dp[i][j]/2:dp[i+2][j+1]+=dp[i][j]$$

    如果直接输出概率这样就好,

    但是让写成分数咋整?

    开个结构体记录分子分母可以(好像大部分人这么做的)

    本宝宝一开始开了两个数组分别记录,

    但是人  萌  可爱 会出现各种  正义  玄学的事情,

    反正开结构体的计算过程中没有爆$long long$

    本宝宝就爆了。

    写了两遍都被自己拍地上了

    最后只好换种方法,

    我们先假设分子分母同时乘以$2^{n}$

    然后计算的时候分子除就好,最后同时约分

    然后就$RE$了$qwq$

    为啥?!

    某几位良心同学:“此题并不能输出文件末回车,会$RE$”

    莫名想吐槽$bzoj=reoj$

    上代码:

    /**************************************************************
        Problem: 1867
        User: zhangheran
        Language: C++
        Result: Accepted
        Time:12 ms
        Memory:1316 kb
    ****************************************************************/
     
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    long long f[57][57];
    char map[57][57];
    int n,m;
    template<typename _Element_gcd>
      _Element_gcd
        _gcd(_Element_gcd _m, _Element_gcd _n)
        {
            while (_n != 0)
            {
              _Element_gcd _t = _m % _n;
              _m = _n;
              _n = _t;
            }
          return _m;
        }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
          for(int j=1;j<=i;j++)
            while(map[i][j]!='*'&&map[i][j]!='.') scanf("%c",&map[i][j]);
        f[1][1]=1ll<<n;
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            if(map[i][j]=='*')
                f[i+1][j]+=f[i][j]/2,
                f[i+1][j+1]+=f[i][j]/2;
            else f[i+2][j+1]+=f[i][j];
        long long dp=1ll<<n;
        long long num=_gcd(f[n+1][m+1],dp);
        f[n+1][m+1]==0?printf("0/1"):printf("%lld%c%lld",f[n+1][m+1]/num,47,dp/num);
        return 0;
    }
  • 相关阅读:
    我所认识的JavaScript
    谈如何边做事,边提高
    对JavaScript开发中困扰的思考
    Soundex语音算法
    Perl分割字符串的一个精妙的写法
    Perl深拷贝
    Git diff hash顺序的问题
    perl命令行批量修改文件内容
    IOS写文件
    删除Linux乱码文件
  • 原文地址:https://www.cnblogs.com/arcturus/p/9363476.html
Copyright © 2011-2022 走看看