• Contest20140711 loop 数论


    loop|loop.in|loop.out


    题目描述:

    N个点。

    现在重复这样的操作:

    随机找一个出度为0的点p1,随机找一个入度为0的点p2,连一条有向边从p1指向p2。直到没有出度为0的点。

    统计最终状态这个图中的环的期望个数。

    为了保证答案精度,提供另外一个参数W(正整数),请你输出小于你的答案乘上W后的最大整数。


    输入格式:

    一行两个整数NW


    输出格式:

    一行一个整数(保证不超过10^6)。


    样例输入(多组,测试数据中只有一组):

    1 100

    2 100


    样例输出:

    99

    149


    数据范围:

    30% N<=100

    70% N<=5*10^6

    100% N<=10^18

     

    这道题思路很经典,一个闭环等同于消失,一条链等同于一个点,最后期望值为:f(n)=1/1+1/2+1/3+...+1/n

    f(n)为发散的,然而f(n)-ln(n)为收敛的,极值为欧拉常数0.57721566490153286060651209。

     

     

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    typedef long double real;
    #define PROB "loop"
    #define eps 1e-30
    #define lim 0.577215
    real ans=0;
    int main()
    {
            freopen(PROB".in","r",stdin);
    //        freopen(PROB".out","w",stdout);
            int i,j,k,x,y,z,w;
            long long n;
            scanf("%lld%d",&n,&w);
            if (n<=100000)
            {
                    for (i=1;i<=n;i++)
                    {
                            ans+=(real)1.0/i;
                    }
            }else
            {
                    ans=log(n)+lim;
            }
            int ans2;
    //        real ans3=log(n)+lim;
            ans2=ceil(ans*w);
            printf("%d",ans2-1);
    }

     

     

     

    by mhy12345(http://www.cnblogs.com/mhy12345/) 未经允许请勿转载

    本博客已停用,新博客地址:http://mhy12345.xyz

  • 相关阅读:
    数据结构学习记录_2019.02.26
    数据结构学习记录_2019.02.23
    数据结构学习记录_2019.02.27
    C语言学习记录_2019.02.23
    本博客所有博文密码均为“000000”
    Oracle触发器
    Oracle重载
    Oracle程序包
    Oracle函数
    Oracle存储过程
  • 原文地址:https://www.cnblogs.com/mhy12345/p/3887763.html
Copyright © 2020-2023  润新知