Description

\(k\)个座位,\(n\)个人依次过来,每人随机从\(k\)个座位中选择一个,并从它开始不停向后走直到遇到空座位坐下。求所有人都能坐下的概率(即没有人走到第\(k+1\)个位置)。\(n, k\leq200\),答案以有理数形式输出。

Solution

我们在最后一个座位之后添加第\(k+1\)个座位,并把这些座位连成环(\(k+1\)后面是第\(1\)个)。并令所有人可以从\(k+1\)个座位中任选一个。

那么现在每个座位坐到人的概率都相同(因为环是对称的),为\(\frac n{k+1}\)。答案实际上就是第\(k+1\)的座位没有人的概率,即\(\frac{k-n+1}{k+1}\)。但是这样是在所有人都可以选\(k+1\)的情况下的。而如果有人选了\(k+1\)就一定没有算到这个概率里,所以只需要乘上\(\left(\frac{k+1}k\right)^n\)即可。

所以答案即为

\[\frac{(k-n+1)(k+1)^{n-1}}{k^n}
\]

有理数计算的话,质因数分解+高精即可。

Code

  1. #include <algorithm>
  2. #include <cstdio>
  3. #include <cstring>
  4. const int N = 205;
  5. int p[N];
  6. int A[10000], len;
  7. void add(int n, int m) {
  8. for (int i = 2; i <= n; ++i) if (!(n % i)) {
  9. while (!(n % i)) {
  10. p[i] += m;
  11. n /= i;
  12. }
  13. }
  14. }
  15. void mul(int x) {
  16. for (int i = 0, t = 0; i < len || t; ++i) {
  17. t = (A[i] = A[i] * x + t) / 10;
  18. A[i] %= 10;
  19. if (i >= len) len = i + 1;
  20. }
  21. }
  22. int main() {
  23. int T;
  24. scanf("%d", &T);
  25. while (T--) {
  26. int n, k;
  27. scanf("%d%d", &n, &k);
  28. if (n > k) { puts("0 1"); continue; }
  29. memset(p, 0, sizeof p);
  30. add(k - n + 1, 1);
  31. add(k + 1, n - 1);
  32. add(k, -n);
  33. memset(A, 0, sizeof A);
  34. A[0] = len = 1;
  35. for (int i = 1; i <= k + 1; ++i)
  36. for (int j = 0; j < p[i]; ++j)
  37. mul(i);
  38. while (len--) printf("%d", A[len]);
  39. putchar(' ');
  40. memset(A, 0, sizeof A);
  41. A[0] = len = 1;
  42. for (int i = 1; i <= k + 1; ++i)
  43. for (int j = p[i]; j < 0; ++j)
  44. mul(i);
  45. while (len--) printf("%d", A[len]);
  46. putchar('\n');
  47. }
  48. }

BZOJ2227 [Zjoi2011]看电影(movie)的更多相关文章

  1. 【BZOJ2227】[ZJOI2011]看电影(组合数学,高精度)

    [BZOJ2227][ZJOI2011]看电影(组合数学,高精度) 题面 BZOJ 洛谷 题解 这题太神仙了. 首先\(K<N\)则必定无解,直接特判解决. 现在只考虑\(K\ge N\)的情况 ...

  2. [ZJOI2011]看电影(组合数学,高精度)

    [ZJOI2011]看电影 这题模型转化很巧妙.(神仙题) 对于这种题首先肯定知道答案就是合法方案除以总方案. 总方案显然是\(k^n\). 那么考虑怎么算合法方案. 当\(n>k\)的时候显然 ...

  3. [ZJOI2011]看电影(MOVIE)

    题目描述 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特殊,具体方式如 ...

  4. Zjoi2011 看电影

    最近在学习一些概率的东西.. 一个随机试验称为 Laplace 试验,当且仅当它满足如下两个条件: (ⅰ) 试验结果 (样本点) 的个数是有限的.(Ω 是有限集) (ⅱ) 任意两个基本事件的概率均相等 ...

  5. [ZJOI2011]看电影(组合数学/打表+高精)

    Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特 ...

  6. Zjoi2011看电影(movie)

    第一步,打表找规律,发现自己的表连3的小样例都过不去,还不如自己手模,自己手跑了5以下的样例,然后发现毫无规律可言…… 第二步,想出一种错误做法,首先n>k必零,人比座都多……然后粘一下图: 基 ...

  7. 【BZOJ2227】【ZJOI2011】看电影 [组合数][质因数分解]

    看电影 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 到了难得的假期,小白班上组织大家去看 ...

  8. HDU 3496 Watch The Movie(看电影)

    HDU 3496 Watch The Movie(看电影) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] New sem ...

  9. 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图

    先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图  ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...

随机推荐

  1. 基于Zookeeper实现的分布式互斥锁 - InterProcessMutex

    Curator是ZooKeeper的一个客户端框架,其中封装了分布式互斥锁的实现,最为常用的是InterProcessMutex,本文将对其进行代码剖析 简介 InterProcessMutex基于Z ...

  2. 多线程学习:Volatile与Synchronized的区别、什么是重排序

    java线程的内存模型 java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问. 上图 ...

  3. Numpy 创建数组2

    Numpy数组除了可以使用底层 ndarray 构造器来创建外,也可以同伙一下集中方式来创建. numpty.empty numpy.empty方法用来创建一个指定形状(shaoe).数据类型(dty ...

  4. centos shell 编程-通过端口号kill对应的进程

    centos shell 编程-通过端口号kill对应的进程 方式一.端口固定 ------------------killportprocess.sh fSum() {    pid=$(lsof ...

  5. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  6. javascript中函数声明和函数表达式的区别 分类: JavaScript 2015-05-07 21:41 897人阅读 评论(0) 收藏

    1.js中函数表达式的定义 表达式(expression)JavaScript中的一个短语,javascript会将其计算(evaluate)出一个结果.程序中的常量是一个最简单的表达式.变量名也是一 ...

  7. Okhttp3上传多张图片同时传递参数

    之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片. 最近做项目,打算换个方法上传图片. Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片. ...

  8. android学习-IPC机制之ACtivity绑定Service通信

    bindService获得Service的binder对象对服务进行操作 Binder通信过程类似于TCP/IP服务连接过程binder四大架构Server(服务器),Client(客户端),Serv ...

  9. [C语言]类型限定词const解析

    作为C90增加的一个受限类型关键字,const赋予了它修饰的变量一个新属性——不变性,如果一个变量声明中带有关键字const,则无法通过赋值.增减运算来修改该变量的值. 一.指针与const结合 co ...

  10. kafka-2.11-0.11集群搭建

    kafka集群依赖于zookeeper,所以需要先搭建zookeeper集群,kafka默认自带了内建的zookeeper,建议使用自己外搭建的zookeeper,这样比较灵活并且解耦服务,同时也可以 ...