bzoj 2306: [Ctsc2011]幸福路径
来源:互联网 发布:java语言的执行模式 编辑:程序博客网 时间:2024/06/05 05:39
题意:
有向图 G有n个顶点 1, 2, …, n,点i 的权值为 w(i)。现在有一只蚂蚁,从
给定的起点 v0出发,沿着图 G 的边爬行。开始时,它的体力为 1。每爬过一条边,它的体力都*p,而蚂蚁爬到某个顶点时的幸福度,是它当时的体力与该点权值的乘积。 求最大幸福值。
题解:
因为当体力很小后,对答案就没什么影响力,所以用一个玄学的倍增floyd卡精度就能过。
设
那么有
然后就过了。
code:
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;const double eps=1e-10;int n,m;double f[110][110],g[110][110];double w[110],p;int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) scanf("%lf",&w[i]); int st=0;scanf("%d %lf",&st,&p); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i!=j) f[i][j]=-1e15; for(int i=1;i<=m;i++) { int x,y;scanf("%d %d",&x,&y); f[x][y]=w[y]*p; } for(;p>eps;p*=p) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=-1e15; for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=max(g[i][j],f[i][k]+f[k][j]*p); memcpy(f,g,sizeof(f)); } double ans=0; for(int i=1;i<=n;i++) ans=max(ans,f[st][i]); printf("%.1lf",ans+w[st]);}
阅读全文
1 0
- BZOJ 2306: [Ctsc2011]幸福路径
- [bzoj]2306: [Ctsc2011]幸福路径
- bzoj 2306: [Ctsc2011]幸福路径
- bzoj 2306: [Ctsc2011]幸福路径
- BZOJ 2306 Ctsc2011 幸福路径 倍增Floyd
- bzoj 2306: [Ctsc2011]幸福路径 倍增+floyed
- 2306: [Ctsc2011]幸福路径
- BZOJ 2306 [Ctsc2011] 幸福路径 [倍增+floyd做法]
- BZOJ 2306 [Ctsc2011] 幸福路径 [期望DP做法]
- BZOJ2306/Ctsc2011 幸福路径
- BZOJF2306 [Ctsc2011]幸福路径
- bzoj 2306 幸福路径 【floyd】【dp】
- 【bzoj2360】【cstc2011】【幸福路径】【倍增+floyd】
- 【重口味。。】CTSC2011杀菌计划
- 【BZOJ】【双倍的幸福】【双(三)倍的经验】
- BZOJ 2500 幸福的道路 树形DP+单调队列
- bzoj 2500: 幸福的道路 动态规划+单调栈
- bzoj 2500 幸福的道路 dfs 单调队列
- FTPrep, 98 Validate Binary Search Tree
- javaWeb-servlet的执行流程详解
- SSH工程整理
- 重温JSP的来龙去脉
- SVM -支持向量机原理与实践之实践篇
- bzoj 2306: [Ctsc2011]幸福路径
- 【Android】Error[*,*]Could not find method android() for arguments [……]
- bitset用法小结
- opencv-python(4):用滑动条作调色板
- MD5
- 决Maven项目相互依赖/循环依赖/双向依赖的问题
- 方差与偏差
- 24点运算
- Android Studio真机测试失败-----''No target device found"