我们的院子变成了N行M列的,而且种满了大蒜(耐久度K)coming的僵尸只有一只(然而这只僵尸貌似发生了变异,它每啃一口植物,同一列相同种类的植物也被啃掉一口,一口一排的样子恩恩),初始位置在第S行,因为没有放置攻击性的植物,所以僵尸就一路吃了,于是出题者很想知道僵尸死在自上而下1-N号手推车的概率各是多少。

http://www.bnuoj.com/bnuoj/problem_show.php?pid=29139

矩阵快速幂。a[i][j]表示从第i行走到第j行的概率,当n>1时

a[1][2] = 1 //从第1行只能走到第2行

a[n][n - 1] = 1 //同上

a[i][i - 1] = a[i][i + 1] = 0.5 (i = 2~n - 1)

僵尸需要咬K * M口,所以就是求a^(M * K)。

但是从单位矩阵开始乘就会WA。。。╮(╯▽╰)╭精度问题吧。。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int t, n, m, k, s;
struct Matrix{double a[50][50];void init(){memset(a, 0, sizeof(a));}Matrix operator * (Matrix& X) const {Matrix ret;for(int i=1; i<=n; i++)for(int j=1; j<=n; j++){ret.a[i][j] = 0.0;for(int k=1; k<=n; k++) ret.a[i][j] += a[i][k] * X.a[k][j];}return ret;}
}A, B;
Matrix EPX(int x){while(x){if(x & 1) B = B * A;A = A * A;x >>= 1;}return B;
}
int main(){scanf("%d", &t);while(t--){scanf("%d%d%d%d", &n, &m, &k, &s);if(n == 1) {puts("1.0000"); continue;}A.init();for(int i=1; i<=n; i++){if(i == 1) A.a[i][2] = 1.0;else if(i == n) A.a[n][n - 1] = 1.0;else A.a[i][i + 1] = A.a[i][i - 1] = 0.5;}B = A;EPX(m * k - 1);for(int i=1; i<=n; i++) printf("%.4lf%c", B.a[s][i], i == n ? '\n' : ' ');}return 0;
}

BNUOJ--19139 PvZ once again相关推荐

  1. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  2. BNUOJ 34978 汉诺塔

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=34978 比赛还剩不到2分钟的时候想到了解法,写好代码提交时卡了一下,出AC结果时比赛已经结 ...

  3. BNUOJ 4358 左手定则 搜索

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=4358 一道很好的搜索题,要注意DFS函数的写法,特别是return的写法. View C ...

  4. BNUOJ 53073 【找规律】

    萌萌哒身高差 "清明时节雨纷纷,路上行人欲断魂." 然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯...以下是wfy同学的日记: 昨天,何老师告诉我们:明天 ...

  5. C语言程序(有一点pp)实现PVZ一代修改,探索记录 (随缘更新)

    wscb 只用过CE 建议食用前先熟悉CE基本操作 游戏版本 Plants_Vs_Zombies_V1.0.0.1051_EN 0.找到PVZ进程 这一步是之后对内存操作的基础 导入windows.h ...

  6. 植物大战僵尸 PVZ Qt版

    前排提示:这是我花了两个星期写的QT版PVZ程序,时间比较紧,因此许多地方可能有不足,请见谅!在GitHub的代码没有注释,因为...即使有注释你也未必能看得懂 ,所以阅读代码前先看这篇文章. 源代码 ...

  7. PVZ的建国保龄球?

    大家好,我是你们的大白,一位不那么崩溃的小学森 其实我还是满崩溃的 昨天说的,第二个问题已经解决了,是一场误会: 第三个关于张小胖的也是,最后呢,还是不说了,很隐私: 但第一个...... 好吧,今天 ...

  8. bnuoj 44359 快来买肉松饼

    http://www.bnuoj.com/contest/problem_show.php?pid=44359 快来买肉松饼 Time Limit: 5000 ms     Case Time Lim ...

  9. PVZ系列七 | 音乐音效

    查看文档 CreateJs整合了SoundJs,看看官方文档说怎么用. SoundJs文档 理解一下 createjs.Sound.alternateExtensions = ["mp3&q ...

  10. CE+C语言制作PVZ修改器(一)——自定义阳光数量

    前前言 上半年疫情在家的时候实在无聊,文艺复兴,把PVZ几个版本又玩了一遍,本来打算写个修改器,结果鸽到现在因为各种事情耽搁到现在.以后有时间就尽量更新,估计这个系列要写很久 另:PVZ各版本合集搜& ...

最新文章

  1. JDK11使用IDEA,配置JavaFX
  2. ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
  3. ios 小数保留位数
  4. APUE2勘误-11.5节 线程终止(关于线程清理处理程序)
  5. 路由器配置——OSPF协议(2)
  6. Terminal(终端)中代理的配置---Linux应用中遇到的问题笔记
  7. return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数
  8. LeetCode:999. 车的可用捕获量
  9. exe4j打包jar成exe文件(将jdk打包在内)
  10. java tcp实现_JAVA 通过 Socket 实现 TCP 编程
  11. 嵌入式-第一季-第4课
  12. 程序开发学习和工作中常用工具——Doxygen和graphviz和HTML Help WorkShop以及 Easy CHM
  13. 第九届蓝桥杯国赛C++B组口胡题解
  14. 在小写与大写之间加下划线
  15. main函数写法总结
  16. AtCoder Grand Contest 030 (AGC030) C - Coloring Torus 构造
  17. 获取农历节日的公共方法
  18. 室内监控与室外监控有什么区别 如何选择合适的监控摄像机
  19. java分割图片_OpenCV3 Java分割图像 提取图像的RGB三原色(Core.split)
  20. 如何检查Mac配备的显卡(GPU)?

热门文章

  1. 2023年最新qq空间说说怎么全部删除_QQ空间说说如何批量删除
  2. Cobalt Strike RCE漏洞浅析
  3. java日期相减获得天数的算法
  4. 7 年算法工程师的工作总结,太精辟了!
  5. JavaBean实现多个文件上传的两种方法
  6. 随记 VUE(实战)
  7. Python爬虫403错误的解决方案
  8. 基于python将grd文件转成tif,并进行裁剪
  9. 虎奔教育二级c语言答案,【虎奔教育计算机二级C语言软件】虎奔教育计算机二级C语言下载 v6.3.4.0 最新版-趣致软件园...
  10. c4droid 下完成的简易计算器