zoukankan      html  css  js  c++  java
  • LuoguP4550:收集邮票

    Pre

    期望题好神奇。

    看题解是必须的。

    Solution

    (f[i])表示当前有(i)种的期望次数。

    (f[i]=frac{n-i}{n}(f[i+1]+1)+frac{i}{n}(f[i]+1))

    解得

    (f[i]=f[i+1]+frac{n}{n-i})

    (g[i])表示当前有(i)种的期望价格。

    (g[i]=frac{i}{n}(g[i]+f[i]+1)+frac{n-i}{n}(g[i+1]+f[i+1]+1))

    解得

    (g[i]=g[i+1]+frac{i}{n-i}f[i]+f[i+1]+frac{n}{n-i})

    Code

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N = 10000 + 5;
    int n;
    double f[N], g[N];
    
    int main () {
    	scanf ("%d", &n);
    	for (int i = n - 1; i >= 0; --i) {
    		f[i] = f[i + 1] + 1.00 * n / (1.00 * n - i);
    		g[i] = g[i + 1] + (i * 1.00 / (1.00 * n - i) * f[i]) + f[i + 1] + (1.00 * n / (1.00 * n - i));
    	}
    	printf ("%.2lf
    ", g[0]);
    	return 0;
    }
    

    Conclusion

    解方程的思维很巧妙,也就是说构造难度远大于代码难度。。。

    此所谓数论题。

  • 相关阅读:
    回眸
    随想
    小序,良感
    润思
    网络爬虫的 “ 黑洞 ”
    Python——文件操作详解
    RandomAccessFile详解
    JSON数据解析及gson.jar包
    BigInteger详解
    Java爬虫——B站弹幕爬取
  • 原文地址:https://www.cnblogs.com/ChiTongZ/p/11217472.html
Copyright © 2011-2022 走看看