二次联通门 : cogs 943. [東方S3] 铃仙•优昙华院•稻叶

/*
cogs 943. [東方S3] 铃仙·优昙华院·稻叶 概率dp 貌似做麻烦了
邻接矩阵和链式前向星都用上了。。。 dp[pos][i][j]表示 第i秒 在i点 上一个经过的点是j
方程:
dp[pos][i][j]=Σdp[pos-1][j][k]*(__out[j]+1-(map[j][k]==1))+dp[pos-1][i][j]*(__out[i]+1-(map[i][j]==1) 前面的求和考虑的是上一秒从其他的一个节点走过来
后面的考虑的是上一秒选择停留在原地 复杂度O(T * N^3) */
#include <cstdio> void read (int &now)
{
register char word = getchar ();
for (now = ; word < '' || word > ''; word = getchar ());
for (; word >= '' && word <= ''; now = now * + word - '', word = getchar ());
} #define Max 55
bool map[Max][Max];
int __out[Max * ]; double dp[Max * ][Max][Max]; int __next[Max * ];
int __to[Max * ]; int edge_list[Max * ];
int Edge_Count ; inline void AddEdge (int from, int to)
{
Edge_Count ++;
__next[Edge_Count] = edge_list[from];
__to[Edge_Count] = to;
edge_list[from] = Edge_Count; }
int main (int argc, char *argv[])
{
freopen ("reisen.in", "r", stdin);
freopen ("reisen.out", "w", stdout);
int N, M, T;
read (N);
read (M);
read (T);
int x, y;
for (register int i = ; i <= M; i ++)
{
read (x);
read (y);
map[x][y] = true;
__out[x] ++;
AddEdge (x, y);
}
dp[][][] = 1.00;
register bool flag;
for (register int pos = , i, j, Flan; pos <= T; pos ++)
for (i = ; i <= N; i ++)
for (j = ; j <= N; j ++)
if (dp[pos][i][j] > 0.00)
{
flag = false;
if (map[i][j])
flag = true;
for (Flan = edge_list[i]; Flan; Flan = __next[Flan])
{
if (__to[Flan] == j)
continue;
dp[pos + ][__to[Flan]][i] += dp[pos][i][j] * 1.00 / (double)(__out[i] + !flag);
}
dp[pos + ][i][j] += dp[pos][i][j] * 1.00 / (double)(__out[i] + !flag);
}
register double Answer; for (register int i = , j; i <= N; i ++)
{
Answer = 0.00;
for (j = ; j <= N; j ++)
Answer += dp[T][i][j];
printf ("%.3lf\n", Answer * );
}
return ;
}

cogs 943. [東方S3] 铃仙•优昙华院•稻叶的更多相关文章

  1. cogs 944. [東方S3] 藤原妹红

    二次联通门 : cogs 944. [東方S3] 藤原妹红 /* cogs 944. [東方S3] 藤原妹红 最小生成树 + 树形dp 首先对原图跑最下生成树 后建出一棵树 在树上进行dp 先走到叶子 ...

  2. COGS 942. [東方S3] 比那名居天子

    Problem 1 比那名居天子(tenshi.cpp/c/pas) 题目描述 在幻想乡,比那名居天子是管理着『要石』的天人.『要石』是能够引发和镇压地震的存在,当然也可以用来改变地形.因为在幻想乡引 ...

  3. [wikioi 1418]铃仙•优昙华院稻叶(东方幻想乡系列模拟赛)(树上递推)

    题目:http://www.wikioi.com/problem/1418/ 分析: 一看就肯定是树上的递推 设f[i][j][k]表示第i秒在k点(从j点走过来的)的概率 则f[i][j][k]=f ...

  4. cogs 920. [東方S1] 琪露诺

    二次联通门 : cogs 920. [東方S1] 琪露诺 /* cogs 920. [東方S1] 琪露诺 dp 方程为dp[i] = max (dp[i - L], dp[i - L + 1] ... ...

  5. cogs 997. [東方S2] 射命丸文

    二次联通门 : cogs 997. [東方S2] 射命丸文 /* cogs 997. [東方S2] 射命丸文 二维前缀和 枚举每个子矩阵 更新最大值.. 莫名rank1 */ #include < ...

  6. cogs 998. [東方S2] 帕秋莉·诺蕾姬

    二次联通门 : cogs 998. [東方S2] 帕秋莉·诺蕾姬 交上去后发现自己没上榜 就想着加点黑科技 把循环展开一下 结果WA了.. 万恶的姆Q /* cogs 998. [東方S2] 帕秋莉· ...

  7. cogs 999. [東方S2]雾雨魔理沙

    二次联通门 : cogs 999. [東方S2]雾雨魔理沙 摸你傻赛高!! /* cogs 999. [東方S2]雾雨魔理沙 原来以为是一道计算几何的题 可是细细一想发现.. 这就是一道dp 由于给定 ...

  8. cogs 2569. [東方] 博丽灵梦 梦想妙珠

    二次联通门 : cogs 2569. [東方] 博丽灵梦 梦想妙珠 /* cogs 2569. [東方] 博丽灵梦 梦想妙珠 莫队水过.. 好久没一遍AC了.. 卡线上榜2333 */ #includ ...

  9. java 覆盖hashCode()深入探讨 代码演示样例

    java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...

随机推荐

  1. docker离线导入导出镜像

    docker save -o mysqlies.tar 5ada6380f248(镜像id)    # 镜像id是要导出的 有镜像的机器  在有镜像的机器上执行docker load --input ...

  2. 集成开发环境(IDE)

    学习目标: 1.了解Java的IDE开发工具 2.会使用Eclipse.IDEA开发工具新建项目,编写代码,并运行程序. 学习过程: 使用文本开发效率无疑是很低的,每次编写完代码后,还需要手动的编译执 ...

  3. Mysql中的排序查询

    进阶3:排序查询 语法: select 查询列表 from 表 [where 筛选条件]order by 排序列表 [asc 升序 | desc降序] 例子 查询员工信息,要求工资从高到低 SELEC ...

  4. RabbitMQ学习之Publish/Subscribe(3)

    上一个教程中,我们创建了一个work queue. 其中的每个task都会被精确的传送到一个worker. 这节,我们将会讲把一个message传送到多个consumers. 这种模式叫做publis ...

  5. java之maven之maven的使用

    这里使用的工具是 myeclipse ,所以这里讲的是在 myeclipse 上使用maven. 1.什么是仓库? 用于存放依赖包.配置文件.其他插件等. 项目添加依赖时,默认从 本地仓库 读取依赖包 ...

  6. Vertx与Spring配合完成DML操作

    服务启动: public static void main( String[] args ) { ApplicationContext context = new AnnotationConfigAp ...

  7. Java自学-接口与继承 final

    Java的修饰符final final修饰类,方法,基本类型变量,引用的时候分别有不同的意思. 示例 1 : final修饰类 当Hero被修饰成final的时候,表示Hero不能够被继承 其子类会出 ...

  8. spark源码阅读--shuffle读过程源码分析

    shuffle读过程源码分析 上一篇中,我们分析了shuffle在map阶段的写过程.简单回顾一下,主要是将ShuffleMapTask计算的结果数据在内存中按照分区和key进行排序,过程中由于内存限 ...

  9. 【开发笔记】-CentOS配置Java环境变量

    如果开发java应用,经常需要配置JAVA_HOME路径,如果是通过yum安装的jdk(一般系统会自带open-jdk),下面讲述配置过程: A 定位JDK安装路径 1. 终端输入: which ja ...

  10. Linux命令:scp

    1.find命令: scp [参数] [原路径] [目标路径] 2.用法: scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的sc ...