BNUOJ--19139 PvZ once again
我们的院子变成了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相关推荐
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
- BNUOJ 34978 汉诺塔
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=34978 比赛还剩不到2分钟的时候想到了解法,写好代码提交时卡了一下,出AC结果时比赛已经结 ...
- BNUOJ 4358 左手定则 搜索
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=4358 一道很好的搜索题,要注意DFS函数的写法,特别是return的写法. View C ...
- BNUOJ 53073 【找规律】
萌萌哒身高差 "清明时节雨纷纷,路上行人欲断魂." 然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯...以下是wfy同学的日记: 昨天,何老师告诉我们:明天 ...
- C语言程序(有一点pp)实现PVZ一代修改,探索记录 (随缘更新)
wscb 只用过CE 建议食用前先熟悉CE基本操作 游戏版本 Plants_Vs_Zombies_V1.0.0.1051_EN 0.找到PVZ进程 这一步是之后对内存操作的基础 导入windows.h ...
- 植物大战僵尸 PVZ Qt版
前排提示:这是我花了两个星期写的QT版PVZ程序,时间比较紧,因此许多地方可能有不足,请见谅!在GitHub的代码没有注释,因为...即使有注释你也未必能看得懂 ,所以阅读代码前先看这篇文章. 源代码 ...
- PVZ的建国保龄球?
大家好,我是你们的大白,一位不那么崩溃的小学森 其实我还是满崩溃的 昨天说的,第二个问题已经解决了,是一场误会: 第三个关于张小胖的也是,最后呢,还是不说了,很隐私: 但第一个...... 好吧,今天 ...
- bnuoj 44359 快来买肉松饼
http://www.bnuoj.com/contest/problem_show.php?pid=44359 快来买肉松饼 Time Limit: 5000 ms Case Time Lim ...
- PVZ系列七 | 音乐音效
查看文档 CreateJs整合了SoundJs,看看官方文档说怎么用. SoundJs文档 理解一下 createjs.Sound.alternateExtensions = ["mp3&q ...
- CE+C语言制作PVZ修改器(一)——自定义阳光数量
前前言 上半年疫情在家的时候实在无聊,文艺复兴,把PVZ几个版本又玩了一遍,本来打算写个修改器,结果鸽到现在因为各种事情耽搁到现在.以后有时间就尽量更新,估计这个系列要写很久 另:PVZ各版本合集搜& ...
最新文章
- JDK11使用IDEA,配置JavaFX
- ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
- ios 小数保留位数
- APUE2勘误-11.5节 线程终止(关于线程清理处理程序)
- 路由器配置——OSPF协议(2)
- Terminal(终端)中代理的配置---Linux应用中遇到的问题笔记
- return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数
- LeetCode:999. 车的可用捕获量
- exe4j打包jar成exe文件(将jdk打包在内)
- java tcp实现_JAVA 通过 Socket 实现 TCP 编程
- 嵌入式-第一季-第4课
- 程序开发学习和工作中常用工具——Doxygen和graphviz和HTML Help WorkShop以及 Easy CHM
- 第九届蓝桥杯国赛C++B组口胡题解
- 在小写与大写之间加下划线
- main函数写法总结
- AtCoder Grand Contest 030 (AGC030) C - Coloring Torus 构造
- 获取农历节日的公共方法
- 室内监控与室外监控有什么区别 如何选择合适的监控摄像机
- java分割图片_OpenCV3 Java分割图像 提取图像的RGB三原色(Core.split)
- 如何检查Mac配备的显卡(GPU)?
热门文章
- 2023年最新qq空间说说怎么全部删除_QQ空间说说如何批量删除
- Cobalt Strike RCE漏洞浅析
- java日期相减获得天数的算法
- 7 年算法工程师的工作总结,太精辟了!
- JavaBean实现多个文件上传的两种方法
- 随记 VUE(实战)
- Python爬虫403错误的解决方案
- 基于python将grd文件转成tif,并进行裁剪
- 虎奔教育二级c语言答案,【虎奔教育计算机二级C语言软件】虎奔教育计算机二级C语言下载 v6.3.4.0 最新版-趣致软件园...
- c4droid 下完成的简易计算器