[bzoj]2306: [Ctsc2011]幸福路径
来源:互联网 发布:淘宝网店名字能改吗 编辑:程序博客网 时间:2024/06/04 23:19
这道题用倍增+floyd。
令f[i][j][t]表示从i到j走2^t步的最大值。
就有f[i][j][t]=max{f[i][k][t-1]+f[k][j][t-1]*p^(2^t)}
在实际处理时可以省略t,每次floyd只需将p乘方即可。
#include <cstdio>#include <algorithm>using namespace std;const int N=105;int n,m,st,x,y;double w[N],p,f[N][N],g[N][N],ans;int main(){ register int i,j,k; scanf("%d %d",&n,&m); for (i=1;i<=n;i++) { scanf("%lf",&w[i]); } scanf("%d %lf",&st,&p); for (i=1;i<=n;i++) { for (j=1;j<=n;j++) f[i][j]=-1e100; f[i][i]=0; } for (i=1;i<=m;i++) { scanf("%d %d",&x,&y); f[x][y]=w[y]; } double t=p; for (;p>1e-8;p*=p) { for (i=1;i<=n;i++) for (j=1;j<=n;j++) g[i][j]=-1e100; for (k=1;k<=n;k++) for (i=1;i<=n;i++) for (j=1;j<=n;j++) { g[i][j]=max(g[i][j],f[i][k]+f[k][j]*p); } for (i=1;i<=n;i++) for (j=1;j<=n;j++) f[i][j]=g[i][j]; } for (i=1;i<=n;i++) { ans=max(ans,g[st][i]); } printf("%.1lf",w[st]+ans*t); return 0;}
阅读全文
0 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 单调队列
- JSON
- 认识JS
- 利用栈实现逆波兰式求值
- dpkg 被中断
- Linux 消息队列、共享内存、信号量(一)消息队列
- [bzoj]2306: [Ctsc2011]幸福路径
- 【C#】数组
- 使用命令行查看mysql数据库
- 使用batik绘制SVG时,往SVG里面绘制位图
- hdu 4864 Task
- 从最大似然到EM算法浅解
- Android 广播机制
- <模型汇总-9> Variational AutoEncoder_VAE基础:LVM、MAP、EM、MCMC、Variational Inference(VI)
- Julia : array[ ] 与几种过滤条件