【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元
【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡
Description
Input
Output
Sample Input
1 2
Sample Output
0.333333333
题解:好吧上来先Orz PoPoQQQ
然后本蒟蒻连题解都看了半天才懂,这里就做一下题解的注释吧~
1.矩阵的等比数列。。。什么鬼?
矩阵也是满足结合律的,跟数一样
2.为什么[I-T]乘过来后跑到了ans右边?
不然矩乘没有意义。。。
3.为什么要对[I-T]的转置求高斯消元?
因为矩乘的法则和方程组的运算法则是不一样的~你yy一下后会发现正好相反
#include <cstring>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double eps=1e-10;
int n,m,p,q;
int pa[50010],pb[50010],d[310];
double v[310][310],ans[310];
int main()
{
scanf("%d%d%d%d",&n,&m,&p,&q);
if(p>q) p=q;
int i,j,k;
for(i=1;i<=m;i++) scanf("%d%d",&pa[i],&pb[i]),d[pa[i]]++,d[pb[i]]++;
v[1][n+1]=1.0*p/q;
for(i=1;i<=n;i++) d[i]=max(d[i],1);
for(i=1;i<=m;i++)
{
v[pb[i]][pa[i]]-=1.0*(q-p)/q/d[pa[i]];
v[pa[i]][pb[i]]-=1.0*(q-p)/q/d[pb[i]];
}
for(i=1;i<=n;i++) v[i][i]+=1.0;
double t;
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++) if(fabs(v[j][i])>fabs(v[i][i])) for(k=i;k<=n+1;k++) swap(v[i][k],v[j][k]);
for(j=i+1;j<=n;j++)
{
t=v[j][i]/v[i][i];
for(k=i;k<=n+1;k++) v[j][k]-=v[i][k]*t;
}
}
for(i=n;i>=1;i--)
{
for(j=i+1;j<=n;j++) v[i][n+1]-=v[i][j]*ans[j];
ans[i]=v[i][n+1]/v[i][i];
}
for(i=1;i<=n;i++) printf("%.9lf\n",ans[i]);
return 0;
}
【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元的更多相关文章
- bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡【dp+高斯消元】
算是比较经典的高斯消元应用了 设f[i]为i点答案,那么dp转移为f[u]=Σf[v]*(1-p/q)/d[v],意思是在u点爆炸可以从与u相连的v点转移过来 然后因为所有f都是未知数,高斯消元即可( ...
- BZOJ 1778 [Usaco2010 Hol]Dotp 驱逐猪猡 ——期望DP
思路和BZOJ 博物馆很像. 同样是高斯消元 #include <map> #include <ctime> #include <cmath> #include & ...
- bzoj1778: [Usaco2010 Hol]Dotp 驱逐猪猡(概率DP+高斯消元)
深夜肝题...有害身心健康QAQ 设f[i]为到达i的概率,d[i]为i的度数. 因为无限久之后炸弹爆炸的概率是1,所以最后在i点爆炸的概率实际上就是f[i]/sigma(f[]) 列出方程组 f[i ...
- BZOJ1778 [Usaco2010 Hol]Dotp 驱逐猪猡
首先我们列出转移矩阵$M$,$M_{i, j} = \frac {1 - \frac{p} {q}} {deg[i]}$(i,j之间有边)or $M_{i, j} = 0$(i,j之间没边) 则这个矩 ...
- BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元
BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就 ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 563 Solved: 216[Submi ...
- BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元
BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...
- 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元
题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两 ...
随机推荐
- 淘宝开源项目之Tsar
软件介绍: Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用,它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务 ...
- ASP.net的身份验证方式有哪些?
[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验 ...
- Java程序猿修炼之道 之 Logging(3/3) - 怎么分析Log
1. 说明 作为一个程序猿我们常常要做一件事情:获取某个Log文件,从当中找出自己想要的信息. 本文总结了我在工作中使用了哪些工具来分析Log文件获取我想要的信息,我近期几年的工作环境都是server ...
- Java之JDBC学习
(一),MySql数据库 1,MySql数据库的数据类型定义 2,完整性约束: 3,索引: 作用:唯一作用就是加快对表查询速度,索引通过快速路径方法访问来快速定位数据,从而减少磁盘的II/O; 缺点: ...
- poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
题目链接: 点击打开链接 题意: 给定一个有向图,求: 1) 至少要选几个顶点.才干做到从这些顶点出发,能够到达所有顶点 2) 至少要加多少条边.才干使得从不论什么一个顶点出发,都能到达所有顶点 ...
- Node.js 替换文档内容
server.js代码: var http=require('http'); var fs=require('fs'); var server=http.createServer(function(r ...
- Node.js的静态页面想通过jQuery的Ajax函数调用远程服务的措施无效
程序下载:https://files.cnblogs.com/files/xiandedanteng/nodejsMakejqueryAjaxInvalid.rar 在 http://www.cnbl ...
- Java取得操作系统的临时目录
一般来说,程序员用Eclipse在Windows上编程,而会将war/ear包发布到Linux的服务器上. 涉及临时文件输出的话需要找一个临时目录,下面的语句就能帮你获得不分操作系统的临时目录 Str ...
- Android 虚线切割线
drawable下新建一个虚线的xml.dash_line.xml <? xml version="1.0" encoding="utf-8"?> ...
- C连接MySql
连接数据库connect.c #include <stdio.h> #include <mysql/mysql.h> int main() { //MYSQL句柄 MYSQL ...