题目链接 LOJ

题解

考虑进行Dp,我们设 f[i][j] f [ i ] [ j ] f[i][j]表示到达节点 i i i消耗了j" role="presentation" style="position: relative;">jjj时间的开心度的期望,
状态转移的话直接对每一个节点枚举相邻的节点就可以,要提前处理出,从当前节点出发可以到达的节点的个数。
初始化的话 f[i][c[i]] f [ i ] [ c [ i ] ] f[i][c[i]]的值一定为 k[i] k [ i ] k[i],所以这样初始化就好,
对于节点 i i i f[i][j]+=f[j][j+c[edge[i].to]+edge[i].val]num" role="presentation" style="position: relative;">f[i][j]+=f[j][j+c[edge[i].to]+edge[i].val]numf[i][j]+=f[j][j+c[edge[i].to]+edge[i].val]numf[i][j]+=\frac{f[j][j+c[edge[i].to]+edge[i].val]}{num},要保证 j+c[edge[i].to]+edge[i].val<=k j + c [ e d g e [ i ] . t o ] + e d g e [ i ] . v a l <= k j+c[edge[i].to]+edge[i].val才可以,否则不会选

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
const int MAXN=1e6;
using namespace std;
int cnt,head[MAXN],k1[MAXN],k2[MAXN],c[MAXN],n,m,k;
double f[3000][3000],F[3000][3000];
struct Edge
{int next,to,val;
}edge[MAXN];
inline void Add_Edge(int u,int v,int val)
{edge[++cnt]=(Edge){head[u],v,val};head[u]=cnt;
}
int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++) scanf("%d%d%d",&c[i],&k1[i],&k2[i]);for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);Add_Edge(x,y,z);Add_Edge(y,x,z);}for(int j=k;j>=0;j--){for(int i=1;i<=n;i++){   f[i][j]=k1[i],F[i][j]=k2[i];int num=0;for(int a=head[i];a;a=edge[a].next)if(edge[a].val+j+c[edge[a].to]<=k) num++;for(int a=head[i];a;a=edge[a].next){if(edge[a].val+j+c[edge[a].to]<=k){f[i][j]+=(f[edge[a].to][edge[a].val+j+c[edge[a].to]])/num;F[i][j]+=(F[edge[a].to][edge[a].val+j+c[edge[a].to]])/num;}}}}double sum1=0.0,sum2=0.0;for(int i=1;i<=n;i++){sum1+=f[i][c[i]]/n;sum2+=F[i][c[i]]/n;}printf("%.5lf %.5lf",sum1,sum2);return 0;
}

【LOJ6178】 「美团 CodeM 初赛 Round B」景区路线规划 期望概率DP相关推荐

  1. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  2. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

    「美团 CodeM 初赛 Round B」送外卖2 内存限制:32 MiB 时间限制:200 ms 题目描述 一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 ...

  3. 「美团 CodeM 初赛 Round B」送外卖2

    题目描述: 一张n个点m条有向边的图上,有q个配送需求,需求的描述形式为(si,ti,li,ri),即需要从点si送到ti,在时刻li之后(包括li)可以在si领取货物,需要在时刻ri之前(包括ri) ...

  4. [美团 CodeM 初赛 Round A]最长树链

    题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1. 思路: 暴力DP. 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度. 然后暴力转移一下,时间复杂度 ...

  5. 「LibreOJ NOIP Round #1」旅游路线

    「LibreOJ NOIP Round #1」旅游路线 题目链接 做法: 首先肯定要预处理些东西,来使单词询问达到\(o(logn)\)或者\(o(1)\)的复杂度,又因为距离这个东西的范围太大,我们 ...

  6. 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序

    [题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...

  7. LiberOJ #6210. 「美团 CodeM 决赛」tree 树形DP

    题目链接:点这里 题解: 需要证明,所求的路径一定是全部权值都为1或者,路径上权值至多有一个为2其余为1且权值2在路径中央. 然后树形DP 设定dp[i][0/1] 以1为根的情况下,以i 节点下子树 ...

  8. LOJ#6085. 「美团 CodeM 资格赛」优惠券(set)

    题意 题目链接 Sol 考虑不合法的情况只有两种: 进去了 再次进去 没进去 但是出来了 显然可以用未知记录抵消掉 直接开个set维护一下所有未知记录的位置 最优策略一定是最后一次操作位置的后继 同时 ...

  9. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

最新文章

  1. ARM处理器的运行模式和ARM寄存器
  2. SQL2005 四个排名函数(row_number、rank、dense_rank和ntile)的比较
  3. VTK:饼形图用法实战
  4. 01背包初始化的细节问题与循环下限的改进
  5. linux终端如何打开文件夹,如何从终端打开文件夹(带GUI)?
  6. 继承20161223
  7. linux 统计端口链接,linux netstat 统计链接数查看外部(转)
  8. Vue_案例_交互添加_利用子组件调用父组件的添加方法实现---vue工作笔记0023
  9. php学生选课系统设计网站作品
  10. 从零实现深度学习框架——优化反向传播相关代码
  11. cmd使用conda建立python虚拟环境
  12. 2021-07-28 cad贱人工具箱5.8
  13. 计算机体系结构基础2(究竟什么是冯诺依曼瓶颈(von Neumann Bottleneck)?)
  14. 无线桥接怎么设置网关和dns服务器,两个无线路由器进行桥接的设置方法
  15. 基础知识——PMIC
  16. Java 递归实现树形菜单
  17. 【备忘】hive 调优
  18. android 饼图进度框,如何创建循环进度条(饼图),如指标 – Android
  19. 哈工大软件构造 Git使用
  20. 基于J2EE的科研项目管理系统设计与实现

热门文章

  1. 详解Python的codecs模块
  2. 畅捷通T+与旺店通·企业奇门对接集成报表单据查询打通创建其他入库单
  3. C#-Lambda表达式
  4. 古有愚公移山,今有冤种搬家~某人含泪写完了搬家脚本~~
  5. 学习前端D1(打鸡血中)
  6. 防不胜防 4K电视和4K屏都有假的!到底怎样才是真4K?
  7. Mac 下MySql在系统偏好设置面板报错:‘“ 若要使用“MySQL”偏好设置面板,“系统偏好设置”必须退出并重新打开。”
  8. 乌班图docker版本18.04升级到19.03
  9. 台式计算机会消失吗,在未来台式机必然会消失,只剩下一体机,一体机过几年也将会消失...
  10. 详解floyd算法 及<MATLAB>实现