目录

  • 打气球

    • 描述
    • 輸入
    • 輸出
    • 輸入範例 1
    • 輸出範例 1
    • 思路
    • Code

同步:https://buringstraw.win/index.php/archives/26/

打气球

描述

周末何老板到磁器口游玩。街边有小贩在组织一种打气球游戏,何老板很感兴趣。

店家立了一块布,布上画了N*N的方格,有的方格里挂上了气球,有的没有。

游戏规则如下:

第1步.观察。如果每一行都至少有一个方格没有气球,并且每一列都至少有一个方格没有气球,游戏结束。否则进行第2步。

第2步.抛骰子。店家拿出一个特制的骰子,该骰子有N个面,上面依次有1到N这N 个数字。玩家先后抛两次骰子,设第一次抛出的数字为x,设第二次抛出的数字为y (注:抛出的数字是随机的)。

第3步.打气球。若坐标为(x,y)的格子里有气球,玩家必须将其打爆。子弹1块钱一发。

如果该格子没有气球,忽略该格子,玩家不用开枪,但玩家也需要支付给店家1块钱。

第4步.继续。执行第1步。

何老板是个神枪手,他能做到百发百中。他想你帮他算算,对于当前给出的这局游戏,预计要花多少钱才能结束。

輸入

第一行,两个整数N和M,N表示方格的尺寸,M表示游戏开始时,有M个格子里是没有气球的。 接下来M行,每行两个整数x,y,表示坐标为x,y的格子里没有气球。

輸出

一行,一个实数,完成游戏预计花费,保留2个小数位。

輸入範例 1

5 2
2 3
4 1

輸出範例 1

11.77

更多样例请点击wyx大佬的博客

思路

这小贩真坑!

f[i][j]表示消掉i行j列的期望花费

每次选坐标有以下四种情况

  1. 不影响打掉的行列数量
  2. 增加一个打掉的行
  3. 增加一个打掉的列
  4. 同时增加打掉的行列各一个

对应的期望分别为

  1. \(f(i,j)\cdot \frac{(n-i)\cdot (n-j)}{n^2}\)
  2. \(f(i,j-1)\cdot \frac{(n-i)\cdot j}{n^2}\)
  3. \(f(i-1,j)\cdot \frac{i\cdot (n-j)}{n^2}\)
  4. \(f(i-1,j-1)\cdot \frac{ij}{n^2}\)

所以
\[ f(i,j)=f(i,j)\cdot \frac{(n-i)\cdot (n-j)}{n^2}+f(i,j-1)\cdot \frac{(n-i)\cdot j}{n^2}+f(i-1,j)\cdot \frac{i\cdot (n-j)}{n^2}+f(i-1,j-1)\cdot \frac{ij}{n^2}+1\\ f(i,j)[1-\frac{(n-i)(n-j)}{n^2}]=f(i,j-1)\cdot \frac{(n-i)\cdot j}{n^2}+f(i-1,j)\cdot \frac{i\cdot (n-j)}{n^2}+f(i-1,j-1)\cdot \frac{ij}{n^2}+1\\ f(i,j)[n^2-(n-i)(n-j)]=f(i,j-1)\cdot (n-i)\cdot j+f(i-1,j)\cdot i\cdot (n-j)+f(i-1,j-1)\cdot ij+n^2\\ f(i,j)=\frac{f(i,j-1)\cdot (n-i)\cdot j+f(i-1,j)\cdot i\cdot (n-j)+f(i-1,j-1)\cdot ij+n^2}{n^2-(n-i)(n-j)} \]
边界:

f[0][0]=0;
for(int i=1;i<=n;++i){f[0][i]=f[0][i-1]+1.0*n/i;f[i][0]=f[i-1][0]+1.0*n/i;
}

要死了噗

重点要注意的是输入的是没有气球的格子

我和hqx大佬被坑了好久嘤

Code

#include<cstdio>
#include<iostream>
using namespace std;const int MAXN=2000+5;int hang[MAXN],lie[MAXN];
double f[MAXN][MAXN];int main(){int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=m;++i){int x,y;scanf("%d%d",&x,&y);hang[x]=1;lie[y]=1;}int h=n,l=n;for(int i=1;i<=n;++i){if(hang[i])--h;if(lie[i])--l;}f[0][0]=0;for(int i=1;i<=n;++i){f[0][i]=f[0][i-1]+1.0*n/i;f[i][0]=f[i-1][0]+1.0*n/i;}for(int i=1;i<=h;++i){for(int j=1;j<=l;++j){
//          f[i][j]=f[i-1][j]*1.0*i*(n-j)/n/n+f[i][j-1]*1.0*(n-i)*j/n/n+f[i-1][j-1]*1.0*i*j/n/n+f[i][j]*1.0*(n-i)*(n-j)/n/n+1;f[i][j]=1.0*(f[i-1][j]*i*(n-j)+f[i][j-1]*(n-i)*j+f[i-1][j-1]*i*j+n*n)/(n*n-(n-i)*(n-j));}}printf("%.2lf\n",f[h][l]);return 0;
}

转载于:https://www.cnblogs.com/buringstraw/p/10386118.html

义冢oj P5033打气球相关推荐

  1. 厦理OJ——1003:第三届程序设计大赛 让气球飞起来

    一.题目 Description 比赛又一次开始了,看着气球漂浮在周边是多么兴奋的事情啊,但是告诉你一个秘密,裁判最喜欢做的事情就是猜一个问题,即数目最多的气球颜色.当比赛结束时,他们会数每种颜色的气 ...

  2. 厦门理工 oj 1003 第三届程序设计大赛 让气球飞起来

    Description 比赛又一次开始了,看着气球漂浮在周边是多么兴奋的事情啊,但是告诉你一个秘密,裁判最喜欢做的事情就是猜一个问题,即数目最多的气球颜色.当比赛结束时,他们会数每种颜色的气球数目并公 ...

  3. zcmu oj 1489:Problem A(数气球)

    题目描述 Chieh love ACM, So he likes balloons. Today he sees many balloons in the shop. And he wants to ...

  4. 记萌新赛的命题过程与踩气球过程

    从命题环节开始记起吧,踩气球部分放在后半段压轴. 大约$20$天以前,那天早上我刚下火车,得知今年比赛命题组组长是$xiang578$,老师发的命题人员名单中并没有我.出于对命题工作的好奇与热爱,我向 ...

  5. LeetCode简单题之“气球” 的最大数量

    题目 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球). 字符串 text 中的每个字母最多只能被使用一次.请你返回最多可以 ...

  6. leetcode-452 用最少数量的箭引爆气球

    在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐标总是小于结束坐标.平面 ...

  7. 贪心:Burst Balloons 最少次数完成射击气球

    已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓 ...

  8. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题

    问题 A: 割点与桥 时间限制: 1 Sec  内存限制: 5 MB 提交: 475  解决: 34 提交 状态 算法问答 题目描述 给出一个无向连通图,找到所有的割点和桥 输入 第一行:点的个数,如 ...

  9. 【青少年编程】【三级】打气球游戏

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  10. 【ACM】杭电OJ 2037

    题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...

最新文章

  1. App Store内购机制
  2. 使用BCH 操作码的三个新型应用程序
  3. Simulink仿真教程2---一些基本操作
  4. 在Eclipse中配置Tomcat服务
  5. MyBatis学习总结(三)——优化MyBatis配置文件中的配置
  6. php 中curd表达啥,CURD语句的基本语法和PDO中操作数据表的基本步骤实例演示增删改查命令 2019年07月24日 23时10分...
  7. 了解mysqlpump工具
  8. 设计模式——装饰者(Decorator)模式DEMO——游戏角色的装饰者模式实现
  9. redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
  10. 一步一步学pwntools(适合新手)
  11. JVM中GC Root对象有哪些?
  12. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)!
  13. 给PhotoShop安装Portraiture插件
  14. 和 8 个程序员聊了一下午,集齐了这些经验!
  15. Illustrator 教程,如何在 Illustrator 中使用钢笔工具创建作品?
  16. 匈牙利算法求最大匹配
  17. 测试吃鸡fps软件,GTX1050Ti吃鸡足矣 2017热销游戏本吃鸡横评
  18. redis系列-redis的连接
  19. 内蒙古科技大学计算机专业校企合作好不好,校企合作真的靠谱吗 有什么坏处...
  20. HTML项目心得500字,心得体会作文500字(精选10篇)

热门文章

  1. win10文件服务器怎么进,如何从win10进入云服务器
  2. 用python爬取网页数据代码_python实现web页面数据抓取代码
  3. latex 参考文献显示问号_回「LaTeX 的罪与罚」
  4. gitlab-runner错误之:New runner. Has not connected yet(runner注册成功到了gitlab,但是前面的图标是灰色三角形)
  5. 证明不同特征值的实对称矩阵的特征向量相互正交的
  6. poj2142 The Balance
  7. 腾讯bugly android sdk镜像,Android 腾讯bugly接入记录教程
  8. 概率论与数理统计 期末突击复习
  9. 2020-10-31
  10. PREEMPT RT 实现原理