题目链接: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

[BC Round#26] Card 【各种水】相关推荐

  1. HDU 5804 BestCoder Round #86 Price List (水题)

    Price List 题目链接: 点我打开链接 Source BestCoder Round #86  题意:有一个人去 n 间商店购物,在每家商店购买最多一件物品,也可以什么都不买.给你每家商店的物 ...

  2. Google Code Jam 2015 Round 1A Mushroom Monster 水

    题意:每10秒扫描一下盘子,查看盘子里面的面包个数,问你主角用两种吃法可能吃得的最少的面包. 1)任意吃. 2)每秒以恒定速度. 解题思路:暴力,找差值. 解题代码: 1 // File Name: ...

  3. Educational Round 26 C. Two Seals

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  4. 【Educational Codeforces Round 6A】【水题】Professor GukiZ's Robot 曼哈顿距离

    A. Professor GukiZ's Robot time limit per test 0.5 seconds memory limit per test 256 megabytes input ...

  5. oracle中负数的四舍五入,oracle中round()四舍五入

    oracle中round()四舍五入 语法: Round 函数 语法为ROUND(number,num_digits) 其中Number是需要进行四舍五入的数字:Num_digits为指定的位数,按此 ...

  6. 玲珑杯 1164 - 战舰萝莉 线段树水题

    点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...

  7. J2EE高级软件工程师面试题集

      第一章:J2EE高级软件工程师面试题集 --JAVA基础部分 1.面向对象的特征有哪些方面1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不 ...

  8. javascript开发HTML5游戏--斗地主(单机模式part2)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  9. 【cf】Codeforces 题解等汇总

    [cf]Codeforces Round #774 (Div. 2) 前4题 [cf]Codeforces Round #774 (Div. 2) 前4题_legend_yst的博客-CSDN博客 [ ...

最新文章

  1. 今年,你会为5G消费吗?就一分钟,求投票
  2. POJ 1236 学校网络间的强连通
  3. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
  4. SpringCloud学习成长之 十一 Docker部署cloud项目
  5. 城管威逼交警“让老百姓笑话”
  6. Python基础总结之常用内置方法总结
  7. springBoot 通过使用log4j2
  8. 机器学习(八)Apriori算法学习
  9. 苹果推出Apple Pay防欺诈功能 目前仅限于Visa
  10. java输入某年某个季度_Java获取某年某季度的第一天出错
  11. 一篇不错的讲解Java异常的文章
  12. 学习英语,先记下留着后用
  13. § 1.3 简 单 的 Java程 序
  14. 史上最全Java基础视频教程
  15. LoadRunner报错vuser_init.c(18): Error: nca_connect_server: cannot communicate
  16. Flask Marshmallow基本使用
  17. 手机浏览器怎么下载视频,第三方手机浏览器下载视频的方法
  18. android:关于Handle
  19. 大话西游手游服务器维护要多久,大话西游手游2017年1月5日维护公告
  20. Grafana安装与配置

热门文章

  1. mysql数据库用户的创建_mysql创建用户及数据库
  2. python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份
  3. 五、scrapy爬虫框架——logging 模块的使用
  4. LeetCode 2166. 设计位集(Bitset)
  5. LeetCode 1670. 设计前中后队列(deque)
  6. LeetCode 340. 至多包含 K 个不同字符的最长子串(滑动窗口)
  7. LeetCode 837. 新21点(动态规划)
  8. 程序员面试金典 - 面试题 16.11. 跳水板(数学)
  9. LeetCode 129. 求根到叶子节点数字之和(DFS)
  10. java set hashcode_Java学习笔记_180724_HashSet_hashCode()