Description

有向图 G有n个顶点 1, 2, …, n,点i 的权值为 w(i)。现在有一只蚂蚁,从

给定的起点 v0出发,沿着图 G 的边爬行。开始时,它的体力为 1。每爬过一条

边,它的体力都会下降为原来的 ρ 倍,其中ρ 是一个给定的小于1的正常数。而

蚂蚁爬到某个顶点时的幸福度,是它当时的体力与该点权值的乘积。

我们把蚂蚁在爬行路径上幸福度的总和记为 H。很显然,对于不同的爬行路

径,H 的值也可能不同。小 Z 对 H 值的最大可能值很感兴趣,你能帮助他计算

吗?注意,蚂蚁爬行的路径长度可能是无穷的。

Input

每一行中两个数之间用一个空格隔开。

输入文件第一行包含两个正整数 n, m,分别表示 G 中顶点的个数和边的条

数。

第二行包含 n个非负实数,依次表示 n个顶点权值 w(1), w(2), …, w(n)。

第三行包含一个正整数 v0,表示给定的起点。

第四行包含一个实数 ρ,表示给定的小于 1的正常数。

接下来 m行,每行两个正整数 x, y,表示<x, y>是G的一条有向边。可能有

自环,但不会有重边。

Output

仅包含一个实数,即 H值的最大可能值,四舍五入到小数点后一位。

Sample Input

5 5

10.0 8.0 8.0 8.0 15.0

1

0.5

1 2

2 3

3 4

4 2

4 5

Sample Output

18.0

HINT

对于 100%的数据, n ≤ 100, m ≤ 1000, ρ ≤ 1 – 10^-6

, w(i) ≤ 100 (i = 1, 2, …, n)。

Solution

把点权换成边权,钦定每条边的边权为终点点权,那么答案就是边权最大和+起点点权。

考虑这么一个转移方程

\[d^r[i][j]=d^{r-1}[i][k]+p^r*d^{r-1}[k][j]
\]

其中\(d^r[i][j]\)表示路径i->j经过r条边的最大值。

注意到p<1,所以当r足够大时,p无限趋近与0.所以随便选个大一点的r就好了...(根据题解,可选r=50)类似倍增floyd那样跑一下,然而因为r只需要取到50就够了所以直接枚举就好了不用倍增。

这题还是没自己想出来啊,这个无限趋近于0根本没想到qwq。

注意一个点就是\(d^0[x][y]=p*val\),因为已经经过一条边了。

/**************************************************************
Problem: 2306
User: henryy
Language: C++
Result: Accepted
Time:1656 ms
Memory:6204 kb
****************************************************************/ #include <bits/stdc++.h>
using namespace std; double a[110], f[52][110][110];
int n, m, s; int main() {
double ans = 0, p = 0;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) scanf("%lf", &a[i]);
scanf("%d%lf", &s, &p);
memset(f, -0x3f, sizeof(f));
for(int k = 0; k <= 50; ++k) for(int i = 1; i <= n; ++i) f[k][i][i] = 0;
for(int i = 1, x, y; i <= m; ++i) scanf("%d%d", &x, &y), f[0][x][y] = p * a[y];
for(int t = 1; t <= 50; ++t, p *= p) {
for(int k = 1; k <= n; ++k) for(int i = 1; i <= n; ++i) for(int j = 1; j <= n; ++j)
f[t][i][j] = max(f[t][i][j], f[t-1][i][k] + p * f[t-1][k][j]);
}
for(int i = 1; i <= n; ++i) ans = max(ans, a[s] + f[50][s][i]);
printf("%.1lf\n", ans);
}

BZOJ2306: [Ctsc2011]幸福路径的更多相关文章

  1. BZOJ2306:[CTSC2011]幸福路径(倍增Floyd)

    Description 有向图 G有n个顶点 1,  2, …,  n,点i 的权值为 w(i).现在有一只蚂蚁,从给定的起点 v0出发,沿着图 G 的边爬行.开始时,它的体力为 1.每爬过一条边,它 ...

  2. BZOJ2306 [Ctsc2011]幸福路径[倍增]

    这个有环的情况非常的讨厌,一开始想通过数学推等比数列的和,但是发现比较繁就不做了. 然后挖掘这题性质. 数据比较小,但是体力可以很接近1(恼怒),也就是说可能可以跳很多很多步.算了一下,大概跳了2e7 ...

  3. bzoj2306 [Ctsc2011]幸福路径 倍增 Floyd

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2306 题解 倍增 Floyd. 令 \(f[i][j][k]\) 表示走了 \(2^i\) 步 ...

  4. 【BZOJ2306】幸福路径(动态规划,倍增)

    [BZOJ2306]幸福路径(动态规划,倍增) 题面 BZOJ 题解 不要求确切的值,只需要逼近 显然可以通过移动\(\infty\)步来达到逼近的效果 考虑每次的一步怎么移动 设\(f[i][j]\ ...

  5. 【BZOJ 2306】 2306: [Ctsc2011]幸福路径 (倍增floyd)

    2306: [Ctsc2011]幸福路径 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 912  Solved: 437 Description 有向 ...

  6. 【bzoj2306】[Ctsc2011]幸福路径 倍增Floyd

    题目描述 一张n个点的有向图,每个点有一个权值.一开始从点$v_0$出发沿图中的边任意移动,移动到路径上的第$i$个点 输入 每一行中两个数之间用一个空格隔开. 输入文件第一行包含两个正整数 n,  ...

  7. [CTSC2011]幸福路径

    题目描述 有向图 G有n个顶点 1, 2, …, n,点i 的权值为 w(i).现在有一只蚂蚁,从 给定的起点 v0出发,沿着图 G 的边爬行.开始时,它的体力为 1.每爬过一条 边,它的体力都会下降 ...

  8. BZOJ 2306: [Ctsc2011]幸福路径

    Description 有向图 G有n个顶点 1, 2, -, n,点i 的权值为 w(i).现在有一只蚂蚁,从 给定的起点 v0出发,沿着图 G 的边爬行.开始时,它的体力为 1.每爬过一条 边,它 ...

  9. 「CTSC 2011」幸福路径

    [「CTSC 2011」幸福路径 蚂蚁是可以无限走下去的,但是题目对于精度是有限定的,只要满足精度就行了. \({(1-1e-6)}^{2^{25}}=2.6e-15\) 考虑使用倍增的思想. 定义\ ...

随机推荐

  1. html5-css的使用强制优先级

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  2. hdu5032 树状数组

    题意: 对于一个1000*1000的Mushroom, 起点在(1,1)给定一个斜率和一个x,求由斜率和x所对应的直线构成的三角形内蘑菇的总值. 每个点的对应的值为(x+A)(y+B) 解 每个点都有 ...

  3. sitecore系列教程之营销人员和技术人员如何策划与消费者的对话以提升体验?

    “每次良好的交谈都要从良好的倾听开始.” - 未知 你是如何听取网站访问者的?你是在倾听还是只是回复? 拥有内容管理系统只是良好网站战略的一个要素.毕竟,内容必须是动态的,及时的和相关的. 当网站访问 ...

  4. 设计模式之Visitor(访问者)(转)

    Visitor定义 作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 在Java中,Visitor模式实际上是分离了collection结构中的 ...

  5. android使用ARouter跳转activity(阿里巴巴开源的)

    android使用ARouter跳转activity(阿里巴巴开源的) 使用ARouter方式,点击按钮跳转到其他activitypublic void buyOrSell(String str){ ...

  6. I2S接口介绍

    I2S接口介绍一.I2S协议介绍 I2S协议作为音频数据传输协议,由Philips制定.该协议由三条数据线组成:1.SCLK:串行时钟,频率= 2 * 采样频率 * 采样位数.2.WS:字段(声道)选 ...

  7. POJ 1182 食物链 (种类并查集)

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说 ...

  8. bzoj4444 国旗计划

    题目链接 倍增,预处理出每个点往后$2^i$个应该选哪个人 我用的treap就是快 #include<algorithm> #include<iostream> #includ ...

  9. kubernetes install for centos

    官方的文档写的很清楚 https://kubernetes.io/docs/getting-started-guides/centos/centos_manual_config/ 如果已经安装过doc ...

  10. vue style 的scoped 使用

    1 原理 vue 可以通过在 style标签添加scoped这个属性来控制 组件内的css作用域 <style scoped> @media (min-width: 250px) { .l ...