http://www.lydsy.com/JudgeOnline/problem.php?id=3640

dp[i][j] 表示i滴血到达j的概率

dp[i][j] = Σ dp[i+val[i]][k]/d[k]

将第一维看做层次

那么同层之间需要高斯消元解决

对每一层都做一次是 hp*n^3

但是不同层次之间只有常数列是不一样的

记录第一次将系数矩阵消成上三角矩阵的过程

每次修改系数列,只模拟回代的过程

hp* n^2

#include<cstdio>
#include<cstring>
#include<iostream> using namespace std; #define N 151
#define M 5001
#define K 10001 int val[N]; int front[N],to[M<<],nxt[M<<],tot;
int d[N]; double a[N+][N+],b[N+];
struct node
{
int i;
double t;
}e[N][N];
int cnt[N]; double dp[K][N]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void add(int u,int v)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;
} void pre(int n)
{
double t;
for(int i=;i<=n;++i)
{
for(int j=i+;j<=n;++j)
{
t=a[j][i]/a[i][i];
for(int k=i;k<=n;++k) a[j][k]-=a[i][k]*t;
e[j][++cnt[j]].i=i;
e[j][cnt[j]].t=t;
}
}
} void gauss(int n,int m)
{
for(int i=n;i>=;--i)
{
for(int j=i+;j<=n;++j) b[i]-=a[i][j]*dp[m][j];
dp[m][i]=b[i]/a[i][i];
}
} int main()
{
int n,m,hp;
read(n); read(m); read(hp);
for(int i=;i<=n;++i) read(val[i]);
int u,v;
for(int i=;i<=m;++i)
{
read(u); read(v);
add(u,v); d[u]++;
if(u!=v) add(v,u),d[v]++;
}
for(int i=;i<=n;++i)
{
a[i][i]=;
if(val[i]) continue;
for(int j=front[i];j;j=nxt[j])
if(to[j]!=n) a[i][to[j]]-=1.0/d[to[j]];
}
pre(n);
for(int i=hp;i;--i)
{
memset(b,,sizeof(b));
if(i==hp) b[]=;
for(int j=;j<=n;++j)
if(val[j] && i+val[j]<=hp)
for(int k=front[j];k;k=nxt[k])
if(to[k]!=n) b[j]+=dp[i+val[j]][to[k]]/d[to[k]];
for(int j=;j<=n;++j)
for(int k=;k<=cnt[j];++k)
b[j]-=b[e[j][k].i]*e[j][k].t;
gauss(n,i);
}
double ans=;
for(int i=;i<=hp;++i) ans+=dp[i][n];
printf("%.8lf",ans);
}

bzoj千题计划291:bzoj3640: JC的小苹果的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改

    http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...

  9. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

随机推荐

  1. 阿里云 ECS 监控报警设置

    1.阿里云监控项说明 https://helpcdn.aliyun.com/document_detail/43505.html 2.监控设置 3.报警规则 4.设置阈值 5.确定即可. 6.效果图

  2. 简单测评拨号VPS——云立方&淘宝卖家

    做爬虫的同学不可避免地要使用代理IP,除了各网站公布的免费代理IP外,我们还可以选择拨号VPS,本文简单对两家(类)拨号VPS提供商进行测评,如有差错,欢迎指出,非常感谢. 使用过程 云立方 第一次听 ...

  3. idea创建web项目教程

    官网下载idea,安装配置好后,双击进来,第一次创建项目时新建是这样的 第一步:   第二步:创建项目名和项目存放的路径 点finish进入这里   第三步: 第二步点OK进入这个页面,点上面那个加号 ...

  4. Nginx+IIS分布式部署和负载均衡

    1.IIS中部署2个网站 创建2个网站,端口分别为9001.9002 2.下载Nginx 可以进入Nginx官网进行下载,官网地址: http://nginx.org/,需要下载windows版的 3 ...

  5. idou老师教你学Istio :如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  6. 利用KMP算法解决串的模式匹配问题(c++) -- 数据结构

    题目: 7-1 串的模式匹配 (30 分) 给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串 ...

  7. 红黑树插入与删除完整代码(dart语言实现)

    之前分析了红黑树的删除,这里附上红黑树的完整版代码,包括查找.插入.删除等.删除后修复实现了两种算法,均比之前的更为简洁.一种是我自己的实现,代码非常简洁,行数更少:一种是Linux.Java等源码版 ...

  8. 【读书笔记】Linux内核设计与实现(第十八章)

    18.1 准备开始 需要: 1.一个确定的bug.但是,大部分bug通常都不是行为可靠定义明确的. 2.一个藏匿bug的内核版本. 18.2 内核中的bug bug发作时的症状: 明白无误的错误代码( ...

  9. c# WndProc事件 消息类型

    转载:https://www.cnblogs.com/idben/p/3783997.html WM_NULL = 0x0000; WM_CREATE = 0x0001;应用程序创建一个窗口 WM_D ...

  10. 为什么java的main方法必须是静态的

    今天看类型信息时发现一个问题,不能再main方法中打印this关键字的信息,这时想起了之前的知识,不能再静态方法中调用this.理由很简单,this表示“这个对象”,也就是声明一个类的对象,然而静态方 ...