概率dp light 1321
题意:给定一张无向图,每条边都有一个通过的概率 ,如果无法通过,那么就要回到起点重新出发
从起点到终点的时间固定为K,如果成功到达,又需要额外花费K的时间,问走S次的最小期望时间
思路:这道题分为两部分,第一部分是求spfa,第二部分是通过得出的最大的概率的那条路算出答案;怎么算呢,通过最短路求出后,设期望值为E,成功概率为p,如果成功,期望值为p*2k,如果不成功,期望值为(1-p)*(E+2k)因此E=p*2k+(1-p)*(E+2k),化简为E=2k/p最后再乘上s
- #include<cstdio>
- #include<algorithm>
- #include<math.h>
- #include<string.h>
- #include<queue>
- using namespace std;
- const int maxn=1e4+;
- const int inf=0x3f3f3f3f;
- int head[maxn],num=-;
- int s,t;
- double dis[maxn];int vis[maxn];
- struct node
- {
- int v,next;
- double w;
- }G[maxn];
- void build(int u,int v,double w)
- {
- G[++num].v=v;G[num].w=w;G[num].next=head[u];head[u]=num;
- G[++num].v=u;G[num].w=w;G[num].next=head[v];head[v]=num;
- }
- void init()
- {
- memset(head,-,sizeof(head));
- num=-;
- }
- void SPFA()
- {
- memset(dis,,sizeof(dis));
- dis[]=;
- queue<int>q;
- q.push();
- vis[]=;
- while(!q.empty()){
- // printf("11111111111111111111111111\n");
- int u=q.front();
- q.pop();
- vis[u]=;
- for(int i=head[u];i!=-;i=G[i].next){
- int v=G[i].v;double w=G[i].w;
- if(dis[v]<dis[u]*w){
- dis[v]=dis[u]*w;
- if(!vis[v]){
- q.push(v);
- vis[v]=;
- }
- }
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- int cnt=;
- while(T--){
- init();
- int n,m,s,k;
- scanf("%d%d%d%d",&n,&m,&s,&k);
- for(int i=;i<=m;i++){
- int u,v;double w;
- scanf("%d%d%lf",&u,&v,&w);
- w=w/;
- build(u,v,w);
- }
- SPFA();
- double ans=dis[n-];
- double tmp=1.0/ans;
- tmp=(double)(tmp**k*s);
- printf("Case %d: %lf\n",++cnt,tmp);
- }
- return ;
- }
概率dp light 1321的更多相关文章
- 概率DP light oj 1030
t组数据 n块黄金 到这里就捡起来 出发点1 到n结束 点+位置>n 重掷一次 dp[i] 代表到这里的概率 dp[i]=(dp[i-1]+dp[i-2]... )/6 如果满6个的话 否则 ...
- 概率DP light oj 1038
t个数据 然后一个n 输出变成1的期望 看个数据 dp[n]代表n变成1的期望 cnt代表因子个数 pi代表因子 那么dp[n]=1/cnt*(dp[n/p1]+1)+1/cnt*(dp[n/p2]+ ...
- Light OJ 1317 Throwing Balls into the Baskets 概率DP
n个人 m个篮子 每一轮每一个人能够选m个篮子中一个扔球 扔中的概率都是p 求k轮后全部篮子里面球数量的期望值 依据全期望公式 进行一轮球数量的期望值为dp[1]*1+dp[2]*2+...+dp[ ...
- 动态规划——概率dp
所谓概率dp,用动态规划的思想找到一个事件中可能发生的所有情况,然后找到符合要求的那些情况数,除以总数便可以得到符合要求的事件发生的概率.其核心思想还是通过dp来得到事件发生的所有情况,很类似在背包专 ...
- A Dangerous Maze (II) LightOJ - 1395(概率dp)
A Dangerous Maze (II) LightOJ - 1395(概率dp) 这题是Light Oj 1027的加强版,1027那道是无记忆的. 题意: 有n扇门,每次你可以选择其中一扇.xi ...
- Codeforces 28C [概率DP]
/* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...
- HDU 4405 Aeroplane chess (概率DP)
题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i 这个位置到达 n ...
- POJ 2096 Collecting Bugs (概率DP)
题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...
- POJ 2151 Check the difficulty of problems (概率DP)
题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...
随机推荐
- 4 Values whose Sum is 0 UVA 1152
题目链接:https://vjudge.net/problem/UVA-1152 这题题意就是在四个集合内.每个集合分别里挑一个数a,b,c,d,求a+b+c+d=0有多少种选法. 暴力的话就是四重循 ...
- D - Three Integers
https://codeforces.com/contest/1311/problem/D 本题题意:给出a,b,c三个数,a<=b<=c: 可以对三个数中任意一个进行+1或-1的操作: ...
- 2019牛客多校第一场H XOR 线性基模板
H XOR 题意 给出一组数,求所有满足异或和为0的子集的长度和 分析 n为1e5,所以枚举子集肯定是不可行的,这种时候我们通常要转化成求每一个数的贡献,对于一组数异或和为0.我们考虑使用线性基,对这 ...
- VTK坐标系统及视图分割
计算机图像学里广泛应用的坐标系统有四种,分别是:模型坐标系统(model),世界坐标系统(world),视图坐标系统(view)和显示坐标系统(display). 模型坐标系统就是定义模型时所用的坐标 ...
- vue学习指南:第十二篇(详细) - Vue的 路由 第二篇 ( 路由按需加载(懒加载))
各位朋友 因 最近工作繁忙,小编停更了一段时间,快过年了,小编祝愿 大家 事业有成 学业有成 快乐健康 2020开心过好每一天.从今天开始 我会抽时间把 Vue 的知识点补充完整,以及后期会带给大家更 ...
- centos开发环境搭建
1.检查是否安装php php -v yum install php 2.安装composer curl -sS https://getcomposer.org/installer |php //下载 ...
- Windows启动项更改
笔者遇到的问题: 之前新装了Windows10系统,但没注意到的是竟然是deepin和Windows10双系统,一是用不到deepin系统,二是占用C盘空间太多,就重新装回了Windows7系统,但重 ...
- VSFTPD服务器
我虽然vsftpd服务器做了百遍以上,但是我觉的成功率不大.我要写下这篇日记,来让我分析自己曾经的过错!! vsftpd的原理我不多讲!!!请自行百度吧!! 我搭建的环境是 Linux6.4 IP(1 ...
- input placeholder 文字颜色修改
placeholder 文字颜色修改 input::-webkit-input-placeholder{ color:red; } input::-moz-placeholder{ /* Mozill ...
- 常用的 19 条 MySQL 优化
一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...