牛客地址
题目描述
是否经常有艺术创作的冲动,但却限于水平无法描绘?那就交给随机吧!
给定一张 n 个点 m 条边的无向带边权连通图,点有颜色,为黑或白,保证无自环和重边。
定义一次操作为:随机选择两个不同的点,将它们之间的最短路上的点全部染黑(若有多条最短路就都染黑)。
现在你想知道,经过 k 次操作后,黑色点的期望个数是多少 。

思路:算这个的期望,我们可以转化为每个点对期望的贡献,既算出每个点变成黑色的概率。
任意选择两个不同的点,那么就有总数 cnt=n*(n-1)/2;
假设经过i点的最短数次数为y(这个可以由floyd算法算出);
如果该点的颜色本来就为黑色,那么期望贡献为1;
否则,选择k次,至少一次选择的路径含有该点的期望就为(1-(1-y/cnt)^k)(连续k次都没有选择到 反向思考)
取模除法要使用逆元!
细节看代码:

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <bitset>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i=0;(i)<(n);i++)
#define rep1(i,n) for(int i=1;(i)<=(n);i++)
#define se secondusing namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<ll,ll> pii;
const ll mod=1023694381;
const ll N =3e6+10;
const double eps = 1e-6;
const double pi=acos(-1);
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
int dx[8]= {1,0,-1,0,1,1,-1,-1}, dy[8] = {0,1,0,-1,1,-1,1,-1};
int n,m,k;
ll dis[1000][1000];
int c[1000];
int sum[1000];
ll pow1(ll a,ll b){ll ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b/=2;}return ans;
}
void floyd()
{for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);}}}
}
void solve()
{cin>>n>>m>>k;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j) dis[i][j]=0;else dis[i][j]=(ll)1e15;}}for(int i=1;i<=n;i++) cin>>c[i];for(int i=1;i<=m;i++){ll u,v,w;cin>>u>>v>>w;dis[u][v]=w;dis[v][u]=w;}floyd();for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){for(int k=1;k<=n;k++){if(dis[i][j]==dis[i][k]+dis[k][j]) sum[k]++;}}}ll cnt=((n-1)*n)/2;ll inv=pow1(pow1(cnt,k),mod-2)%mod;ll ans=0;for(int i=1;i<=n;i++){if(c[i]==1) ans=(ans+1)%mod;else{ans=(ans+((1-(pow1(cnt-sum[i],k)*inv)%mod+mod)%mod))%mod;}}cout<<ans<<endl;
}
int main()
{iosint T;//cin>>T;T=1;while(T--){solve();}return 0;
}

牛客练习赛74 E CCA的期望(算概率的技巧+floyd处理)相关推荐

  1. 牛客练习赛74 D CCA的图

    牛客地址 题意:中文题目很简单,就是每条路径有一个w权值,你要从s到t,问你,从s到t的路径中,w的最小值为L,最大值为R,你要保证L尽可能的大的情况下R尽量小,输出该L和R值 思路:可以先从权值最大 ...

  2. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  3. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  5. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  6. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  7. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)

    牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...

  8. 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

    牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...

  9. 妄想集合(牛客练习赛90)

    妄想集合(牛客练习赛90) 题意: 开始有 n 个可重集合,开始时每一个集合中都有一个数,有 m 个操作. Quant l r x\text{Quant l r x}Quant l r x:往编号在 ...

最新文章

  1. linux 测试各大网站速度curl
  2. 安卓 简单的登录案例
  3. msm8953+android8.1启动异常进入recovery模式_需要格式化data分区恢复启动
  4. 一台服务器多个网站同端口,多个客户端如何同时连接到服务器上的一个端口,比如80?...
  5. 运行scrapy保存图片,报错ValueError: Missing scheme in request url: h
  6. (大纲)三小时学会openCV
  7. 第29届IEEE IV 征稿启示
  8. 四、内存空间的编辑和ASSIC码
  9. android反射开启通知_作为Android开发者 你真的知道app从启动到主页显示的过程吗?...
  10. 不想业务被中断?快来解锁华为云RDS for MySQL新特性
  11. pythonselenium函数_selenium2.0 关于 python 的常用函数汇总
  12. Mysql 基础语法
  13. 面对初学者的CAN总线入门教程(二)_CAN协议基本概念及其规格标准
  14. VS Code设置缩进两个字符
  15. Harbor启动访问502错误
  16. Android样式系列:自定义按钮样式
  17. Spring之DI依赖注入
  18. tensorflow与pytorch 一起安装
  19. 金庸的「射雕三部曲」,其实还有一个隐藏的第一部
  20. 国际网页短信后台定制源码搭建软件平台定制-移讯云短信系统

热门文章

  1. 当时我就震惊了:无穷带来的各种悖论
  2. 2017年终奖发放,程序员人均11776元排名第一!
  3. 《SAS编程与数据挖掘商业案例》学习笔记之十一
  4. php中页面平滑回到顶部代码,原生JS实现平滑回到顶部组件_javascript技巧
  5. mindray心电监护仪使用说明_怎么看监护仪上的参数
  6. linux raw设备格式化,SUSE Linux 10配置裸设备(raw devices)
  7. mysql特性举例_MySQL事务的四大特性和隔离级别
  8. 9050 端口 linux 进程,windows和linux查看端口占用情况
  9. python编_python编
  10. c#物联网_C# 基础知识系列- 16 开发工具篇