[Lydsy1711月赛]摘苹果

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 174  Solved: 135
[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。

HINT

 

Source

 #include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const ll P=;
const int maxn=;
int n,m;
ll k,ans;
int d[maxn];
ll v[maxn];
inline ll pm(ll x,ll y)
{
ll z=;
while(y)
{
if(y&) z=z*x%P;
x=x*x%P,y>>=;
}
return z;
}
inline int rd()
{
int ret=,f=; char gc=getchar();
while(gc<''||gc>'') {if(gc=='-') f=-f; gc=getchar();}
while(gc>=''&&gc<='') ret=ret*+(gc^''),gc=getchar();
return ret*f;
}
int main()
{
n=rd(),m=rd(),k=rd();
int i,a,b;
for(i=;i<=n;i++) v[i]=rd();
for(i=;i<=m;i++) a=rd(),b=rd(),d[a]++,d[b]++;
for(i=;i<=n;i++) ans=(ans+1ll*d[i]*v[i]%P*k)%P;
ans=ans*pm(m<<,P-)%P;
printf("%lld",ans);
return ;
}

bzoj5091 [Lydsy1711月赛]摘苹果 概率题的更多相关文章

  1. BZOJ5091: [Lydsy1711月赛]摘苹果

    BZOJ5091: [Lydsy1711月赛]摘苹果 https://lydsy.com/JudgeOnline/problem.php?id=5091 分析: 点\(x\)第\(1\)次选中的概率是 ...

  2. BZOJ5091: [Lydsy1711月赛]摘苹果(简单概率)

    5091: [Lydsy1711月赛]摘苹果 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 214  Solved: 163[Submit][Statu ...

  3. BZOJ5091: [Lydsy1711月赛]摘苹果【期望DP】

    Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两 端连接着两棵不同的苹果树.假设第i棵苹果树连接着d_i条道路.小Q将会 ...

  4. 【刷题】BZOJ 5091 [Lydsy1711月赛]摘苹果

    Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两端连接着两棵不同的苹果树.假设第i棵苹果树连接着d_i条道路.小Q将会按 ...

  5. bzoj 5091: [Lydsy0711月赛]摘苹果

    5091: [Lydsy0711月赛]摘苹果 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 148  Solved: 114[Submit][Statu ...

  6. 【BZOJ5091】摘苹果 概率

    [BZOJ5091]摘苹果 Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两 端连接着两棵不同的苹果树.假设第i棵苹果树 ...

  7. bzoj 5094 [Lydsy1711月赛]硬盘检测 概率dp

    [Lydsy1711月赛]硬盘检测 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 273  Solved: 75[Submit][Status][Dis ...

  8. NOIP2005-普及组复赛-第一题-陶陶摘苹果

    题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

  9. BZOJ5090: [Lydsy1711月赛]组题(01分数规划)

    5090: [Lydsy1711月赛]组题 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 785  Solved: 186[Submit][Status ...

随机推荐

  1. fopen,fwrite,fread使用

    fopen, fwrite, fread详解 1.头文件 #include <stdio.h> 2.fopen (1) 函数原型 FILE *fopen(char *filename, * ...

  2. Redis Handle

    package com.jn.baseservice.utils; import com.jn.baseservice.GlobalEntiy.Entity; import com.google.gs ...

  3. go学习笔记-类型转换(Type Conversion)

    类型转换(Type Conversion) 类型转换用于将一种数据类型的变量转换为另外一种类型的变,基本格式 type_name(expression) type_name 为类型,expressio ...

  4. R语言学习笔记(八):零碎知识点(16-20)

    16--complete.cases( ) complete.case()可以判断对象中是否数据完全,然后返回TRUE, FALSE 这一函数在去除数据框中缺失值时很有用. > d kids a ...

  5. 剑指offer题目系列二

    本篇延续上一篇,介绍<剑指offer>第二版中的四个题目:从尾到头打印链表.用两个栈实现队列.旋转数组的最小数字.二进制中1的个数. 5.从尾到头打印链表 题目:输入一个链表的头结点,从尾 ...

  6. 販売管理(SD)

    SD(販売管理)系のSAP DBテーブル. 随時更新していきます. [得意先マスタ]KNA1: 一般データ KNB1: 会計データ KNBK: 銀行データ KNVV: 販売データ KNVP: 取引先機 ...

  7. shell -- 大括号和小括号

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...

  8. LaTeX工具——mathpix安利

    官网: https://mathpix.com/ 效果看下图: 图片打不开点这里 识别效果还行,感觉很适合jbc/zcy这种不喜欢打LaTex公式的神仙.

  9. webpack实践总结

    一.Loader写法及执行顺序 从webpack2起,loader的格式如下: module: { rules: [ {test: /\.css$/, use: ['style-loader','cs ...

  10. tomcat 异常

    Removing obsolete files from server... Could not clean server of obsolete files: null java.lang.Null ...