zoukankan      html  css  js  c++  java
  • 51Nod

    B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接。A国是B国的敌国企图秘密发射导弹打击B国的交通线,现假设每条交通线都有50%的概率被炸毁,B国希望知道在被炸毁之后,剩下联通块的个数的期望是多少?

    Input一个数n(2<=n<=100000) 接下来n-1行,每行两个数x,y表示一条交通线。(1<=x,y<=n) 数据保证其交通系统构成一棵树。Output一行一个数,表示答案乘2^(n-1)后对1,000,000,007取模后的值。Sample Input

    3
    1 2
    1 3

    Sample Output

    8

    题解:

    期望怎么求?(百度上的例子:https://baike.baidu.com/item/数学期望/5362790?fr=aladdin)

    由于题中明确说了是树,所以没断一条边,连通块数量就加一,而且断边的概率为0.5,那么就有连通的期望为E = (n-1)*0.5+1(因为连通块个数最小为1,所以最后肯定要加一个1),显然这个是可能给小数的,但是给他乘以了2^(n-1),所以就变成了ans = (n+1)*2^(n-2)

    代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<math.h>
     6 #include<vector>
     7 #include<queue>
     8 #include<stack>
     9 #include<map>
    10 using namespace std;
    11 typedef long long ll;
    12 const int maxn=5e4+10;
    13 const int INF=0x3f3f3f3f;
    14 const double eps=1e-10;
    15 const int mod = 1e9+7;
    16 #define mt(A,B) memset(A,B,sizeof(A))
    17 #define lson l,m,rt*2
    18 #define rson m+1,r,rt*2+1
    19 int main()
    20 {
    21     ll n;
    22     while(~scanf("%lld", &n))
    23     {
    24         ll a,b;
    25         ll k=n+1;
    26         for(ll i=1; i<n; i++)
    27             scanf("%lld%lld",&a,&b);
    28         for(ll i=0; i<n-2;i++)
    29             k=k*2%mod;
    30         printf("%lld
    ",k);
    31     }
    32     return 0;
    33 }
  • 相关阅读:
    目前阻碍大数据成功的常见问题有哪些
    YII2 的授权(Authorization)
    CCBPM工作流引擎的消息机制与设计
    日志框架实现实时改动,实时生效,详细框架思路(2)
    manacher hihoCoder1032 最长回文子串
    C#.NEt-GDI+中的Pen測试
    Unity3D游戏开发最佳实践20技巧(一)
    Android init.rc文件浅析
    OBIEE开发手冊
    Android Jni层 创建 linux socket 出错问题解决
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/12771649.html
Copyright © 2011-2022 走看看