[BC Round#26] Card 【各种水】

题目链接:HDOJ - 5159

 

这道题的做法太多了..BC的第二题也是可以非常水的..

 

算法一

我在比赛的时候写的算法是这样的..

预处理出所有的答案,然后对于每个询问直接输出。

询问 (a, b) 记作 (a, b) 。

(a, b) 的答案是由 (a, b-1)  的答案推出的。 

(a, 1) 的答案是 1 到 a 的平均数,着十分显然。

如果 b > 1 ,那么我们就考虑在第 b 次,我们抽到每种牌的概率都是 1/a ,然后这张牌之前 b-1 次没被抽到的概率为 ((a-1)/a)^(b-1) ,那么第 b 次新获得的期望得分就是

Sum(1~a) * ((a-1)/a)^(b-1) * (1/a) 。然后这个值加上 (a, b-1) 的答案就是 (a, b) 的答案了。

【代码】

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>using namespace std;typedef double DB;const int MaxN = 100000 + 5, MaxM = 5 + 2;DB Ans[MaxN][MaxM];int main() 
{int T, a, b;scanf("%d", &T);DB t;for (int i = 1; i <= 100000; ++i) {for (int j = 1; j <= 5; ++j) {if (j == 1) {Ans[i][j] = (DB)(1 + i) / 2.0;t = (DB)(i - 1) / (DB)i;continue;}Ans[i][j] = Ans[i][j - 1] + (DB)(1 + i) / 2.0 * t;if (j == 5) continue;t *= (DB)(i - 1) / (DB)i;}}for (int Case = 1; Case <= T; ++Case) {scanf("%d%d", &a, &b);printf("Case #%d: %.3lf\n", Case, Ans[a][b]);}return 0;
}

 

算法二

这种算法是对于 (a, b) 直接求,写起来简单多了。

我们考虑每一张牌,它在 b 次之内如果被抽到了,得分就会加上它的值,那么它在 b 次之内有多大概率被抽到呢?

这个不好直接算,我们就考虑,b 次之内都没有被抽到的概率有多大呢?这个显然就是 ((a-1)/a)^(b) 。那么 b 次之内抽到它的概率就是 1 - ((a-1)/a)^b ,这个概率乘它的值就是这张牌对期望得分的贡献。

那么答案就是 Sum(1~a) * (1 - ((a-1)/a)^b) 。

【代码】

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>using namespace std;typedef double DB;const int MaxN = 100000 + 5, MaxM = 5 + 2;DB Ans[MaxN][MaxM];DB Solve(int a, int b) {DB t = 1;for (int i = 1; i <= b; ++i) t *= (DB)(a - 1) / a;t = 1 - t;return (DB)(1 + a) * (DB)a / 2.0 * t;
}int main() 
{int T, a, b;scanf("%d", &T);for (int Case = 1; Case <= T; ++Case) {scanf("%d%d", &a, &b);printf("Case #%d: %.3lf\n", Case, Solve(a, b));}return 0;
}

  

 

转载于:https://www.cnblogs.com/JoeFan/p/4216705.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Libcurl的介绍

一种请求网络的函数库&#xff0c;安装完后需要一些初始化&#xff0c;修改属性等操作&#xff1b; 程序中一般分为&#xff1a; 1&#xff0c;全局初始化&#xff1b; 2&#xff0c;创建当次请求句柄&#xff1b; 3&#xff0c;设置属性&#xff1b; 4&#xff0c;执行&#x…

奇点、技术失控与技术启示录

来源&#xff1a;资本实验室回顾过去&#xff0c;我们可以看到历史上各个时期涌现出的众多超越时代的新公司、新产品、新思维和新模式。尽管绝大多数创新产品最终都失败了&#xff0c;但先行者们致力于要解决所在时代各种问题和困难的精神&#xff0c;却影响着下一代的技术进步…

Linux常用命令 -- screen

Linux常用命令 -- screen 打开一个screen $screen 这时在机器上就会存在一个screen&#xff0c;这个screen会被以默认的方式命名&#xff1a; $screen -lsThere is a screen on:4087.pts-5.jackson-virtual-machine (01/11/2015 05:33:22 PM) (Detached) 1 Socket in /var/…

Gartner预测2019年十大「数据和分析技术」趋势:增强型分析成为重要卖点

来源&#xff1a;机器之能摘要&#xff1a;处于数据和分析位置的领导人必须审视这些趋势对业务带来的潜在影响&#xff0c;并相应调整业务模式和运营&#xff0c;否则就有可能失去竞争优势。增强型数据分析&#xff0c;增强型数据管理&#xff0c;持续型智能&#xff0c;可解释…

NSIS脚本解释

NSIS脚本语言编程&#xff0c;与hello world项目 https://blog.csdn.net/dbzhang800/article/details/6411870 NSIS是一种为程序打包的脚本语言&#xff0c;有一定的语法规则&#xff1b; 参考&#xff1a;https://blog.csdn.net/xingzheouc/article/details/46502245 对NSIS…

iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

简介 在软件开发中&#xff0c;多线程编程技术被广泛应用&#xff0c;相信多线程任务对我们来说已经不再陌生了。有了多线程技术&#xff0c;我们可以同做多个事情&#xff0c;而不是一个一个任务地进行。比如&#xff1a;前端和后台作交互、大任务&#xff08;需要耗费一定的时…

命令行调用VS编译器

不用打开VS编译器&#xff0c;直接用命令行操作&#xff0c; 参考&#xff1a;https://blog.csdn.net/luoweifu/article/details/49847749

万字长文带你看尽深度学习中的各种卷积网络

来源&#xff1a;AI科技评论摘要&#xff1a;深度学习中的各种卷积网络大家知多少&#xff1f;深度学习中的各种卷积网络大家知多少&#xff1f;对于那些听说过却又对它们没有特别清晰的认识的小伙伴们&#xff0c;这篇文章非常值得一读。Kunlun Bai 是一位人工智能、机器学习、…

Nexus搭建Maven服务器

参考&#xff1a;http://blog.csdn.net/ichsonx/article/details/14642897 1、 为什么使用Nexus 如果没有私服&#xff0c;我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地&#xff0c;而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓…

python压缩文件

参考博客&#xff1a; https://wanglinyong.github.io/2018/06/28/Python压缩解压zip文件/

通信测试:5G 时代的“卖水人”

来源&#xff1a;中泰证券摘要&#xff1a;“金矿”变成了5G&#xff0c;卖水人的故事已拉开帷幕。前言十八世纪末期&#xff0c;在美国的西进运动中&#xff0c;人们在萨克拉门托河里发现了金砂&#xff0c;工人、农民、海员和传教士&#xff0c;前仆后继前来淘金&#xff0c;…

关于mysql内存表的一个帖子(转载)

地址&#xff1a;http://bbs.csdn.net/topics/360030699 引用楼主 zgycsmb 的回复:问&#xff1a;&#xff11;mysql的内存表性能怎么样&#xff12;mysql的内存表与system v 这种共享内存机制比起来&#xff0c;如何3 mysql的内存表怎么用&#xff0c;能不能给个例子&#xf…

Python爬取网页

参考&#xff1a; https://www.cnblogs.com/xiao-apple36/p/8433400.html

2019数字化趋势:未来5年政府、零售数字化程度将达80%

来源&#xff1a;阿里云摘要&#xff1a;2月20日&#xff0c;阿里云研究中心发布《2019数字化趋势报告》。报告指出&#xff0c;当前数字化的应用领域正从互联网行业向政府、金融、零售、农业、工业、交通、物流、医疗健康等行业深入。其中&#xff0c;政府、零售业等将成为受云…

MySql 表分区

http://www.cnblogs.com/acpp/archive/2010/08/09/1795464.html转载于:https://www.cnblogs.com/gaobing/p/4224677.html

QT中读写.ini配置文件的操作

ini 文件(即Initialization file)&#xff1a;这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成&#xff0c;每个Section由若干键(Key)组成&#xff0c;每个Key可以赋相应的值。 //...添加头文件 #include <QSettings> //读写ini文件…

量子计算何时具有真正的商业价值?

来源&#xff1a;IEEE电气电子工程师学会我们对新技术的迷恋似乎总是遵循着同样的轨迹&#xff1a;我们时而着迷&#xff0c;时而崇拜&#xff0c;时而失望&#xff0c;时而沮丧&#xff0c;最终得到的满足比我们最初想象的要少。1954年&#xff0c;德州仪器公司宣称其新型晶体…

[转帖]FPGA--Vivado

来源&#xff1a;http://home.eeworld.com.cn/my/space-uid-639749-blogid-267593.html 一般的&#xff0c;在Verilog中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码。二进制码和格雷码是压缩状态编码。 若使用格雷编码&#xff0c;则相…

国内5G工程建设面临的6大挑战

来源&#xff1a;5G产业圈摘要&#xff1a;2019年被很多人认为是5G建设元年&#xff0c;但是&#xff0c;5G建设要面临的这些难题&#xff0c;你清楚几个&#xff1f;1、网络云化带来的规划和运维挑战5G网络全面云化&#xff0c;在带来功能灵活性的同时&#xff0c;也带来很多技…

QT中的滚动条QScrollArea

QT里的滚动条操作&#xff0c; 我理解的QScrollArea对象的使用为&#xff0c;把某个widget绑定到该QScrollArea对象&#xff0c;scrol->setWidget(widget); 绑定的widget对象的长宽超过边界时&#xff0c;会有滚动条的效果。 #include <QtGui/QApplication> #include…