zoukankan      html  css  js  c++  java
  • BZOJ5091: [Lydsy1711月赛]摘苹果(简单概率)

    5091: [Lydsy1711月赛]摘苹果

    Time Limit: 1 Sec  Memory Limit: 256 MB
    Submit: 214  Solved: 163
    [Submit][Status][Discuss]

    Description

    小Q的工作是采摘花园里的苹果。在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两
    端连接着两棵不同的苹果树。假设第i棵苹果树连接着d_i条道路。小Q将会按照以下方式去采摘苹果:
    1.小Q随机移动到一棵苹果树下,移动到第i棵苹果树下的概率为d_i/(2m),但不在此采摘。
    2.等概率随机选择一条与当前苹果树相连的一条道路,移动到另一棵苹果树下。
    3.假设当前位于第i棵苹果树下,则他会采摘a_i个苹果,多次经过同一棵苹果树下会重复采摘。
    4.重复第2和3步k次。
    请写一个程序帮助计算小Q期望摘到多少苹果。

    Input

    第一行包含三个正整数n,m,k(n,k<=100000,m<=200000),分别表示苹果树和道路的数量以及重复步骤的次数。

    第二行包含n个正整数,依次表示a_1,a_2,...,a_n(1<=a_i<=100)。
    接下来m行,每行两个正整数u,v(1<=u,v<=n,u!=v),表示第u和第v棵苹果树之间存在一条道路。

    Output

     若答案为P/Q,则输出一行一个整数,即P*Q^{-1} mod 1000000007(10^9+7)。

    Sample Input

    3 4 2
    2 3 4
    1 2
    1 2
    2 3
    3 1

    Sample Output

    750000011
    //期望为5.75=23/4=(23*250000002) mod 1000000007=750000011。

    思路:一开始选择每个点的概率为di/2m。 然后转移的概率,可以猜到也是这个。。。。不会证明。

    #include<bits/stdc++.h>
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    #define ll long long
    using namespace std;
    const int maxn=100010;
    const int Mod=1e9+7;
    ll a[maxn],d[maxn],ans;
    ll qpow(ll w,ll x){
        ll res=1; while(x){
            if(x&1LL) res=res*w%Mod;
            w=w*w%Mod; x>>=1;
        }  return res;
    }
    int main()
    {
        ll N,M,K,u,v;
        scanf("%lld%lld%lld",&N,&M,&K);
        rep(i,1,N) scanf("%lld",&a[i]);
        rep(i,1,M){
            scanf("%lld%lld",&u,&v);
            d[u]++; d[v]++;
        }
        rep(i,1,N) ans=(ans+a[i]*d[i])%Mod;
        ans=(ans*K)%Mod;
        ans=ans*qpow(2*M,Mod-2)%Mod;
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    HDOJ 2076 夹角有多大(题目已修改,注意读题)
    HDOJ 2058 The sum problem
    HDOJ 2099 整除的尾数
    HDOJ 2075 A|B?
    HDOJ 2071 Max Num
    HDOJ 2056 Rectangles
    HDOJ 2055 An easy problem
    HDOJ 2053 Switch Game
    HDOJ 2052 Picture
    P4139 上帝与集合的正确用法
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9972978.html
Copyright © 2011-2022 走看看