BZOJ2227 [Zjoi2011]看电影(movie)
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\)即可。
所以答案即为
\]
有理数计算的话,质因数分解+高精即可。
Code
#include <algorithm>
#include <cstdio>
#include <cstring>
const int N = 205;
int p[N];
int A[10000], len;
void add(int n, int m) {
for (int i = 2; i <= n; ++i) if (!(n % i)) {
while (!(n % i)) {
p[i] += m;
n /= i;
}
}
}
void mul(int x) {
for (int i = 0, t = 0; i < len || t; ++i) {
t = (A[i] = A[i] * x + t) / 10;
A[i] %= 10;
if (i >= len) len = i + 1;
}
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n, k;
scanf("%d%d", &n, &k);
if (n > k) { puts("0 1"); continue; }
memset(p, 0, sizeof p);
add(k - n + 1, 1);
add(k + 1, n - 1);
add(k, -n);
memset(A, 0, sizeof A);
A[0] = len = 1;
for (int i = 1; i <= k + 1; ++i)
for (int j = 0; j < p[i]; ++j)
mul(i);
while (len--) printf("%d", A[len]);
putchar(' ');
memset(A, 0, sizeof A);
A[0] = len = 1;
for (int i = 1; i <= k + 1; ++i)
for (int j = p[i]; j < 0; ++j)
mul(i);
while (len--) printf("%d", A[len]);
putchar('\n');
}
}
BZOJ2227 [Zjoi2011]看电影(movie)的更多相关文章
- 【BZOJ2227】[ZJOI2011]看电影(组合数学,高精度)
[BZOJ2227][ZJOI2011]看电影(组合数学,高精度) 题面 BZOJ 洛谷 题解 这题太神仙了. 首先\(K<N\)则必定无解,直接特判解决. 现在只考虑\(K\ge N\)的情况 ...
- [ZJOI2011]看电影(组合数学,高精度)
[ZJOI2011]看电影 这题模型转化很巧妙.(神仙题) 对于这种题首先肯定知道答案就是合法方案除以总方案. 总方案显然是\(k^n\). 那么考虑怎么算合法方案. 当\(n>k\)的时候显然 ...
- [ZJOI2011]看电影(MOVIE)
题目描述 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特殊,具体方式如 ...
- Zjoi2011 看电影
最近在学习一些概率的东西.. 一个随机试验称为 Laplace 试验,当且仅当它满足如下两个条件: (ⅰ) 试验结果 (样本点) 的个数是有限的.(Ω 是有限集) (ⅱ) 任意两个基本事件的概率均相等 ...
- [ZJOI2011]看电影(组合数学/打表+高精)
Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特 ...
- Zjoi2011看电影(movie)
第一步,打表找规律,发现自己的表连3的小样例都过不去,还不如自己手模,自己手跑了5以下的样例,然后发现毫无规律可言…… 第二步,想出一种错误做法,首先n>k必零,人比座都多……然后粘一下图: 基 ...
- 【BZOJ2227】【ZJOI2011】看电影 [组合数][质因数分解]
看电影 Time Limit: 10 Sec Memory Limit: 259 MB[Submit][Status][Discuss] Description 到了难得的假期,小白班上组织大家去看 ...
- HDU 3496 Watch The Movie(看电影)
HDU 3496 Watch The Movie(看电影) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] New sem ...
- 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图
先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图 ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...
随机推荐
- day 48 ORM 进阶 多表连接 创建 以及 html模板继承
多表的一对多创建 多表的多对多创建 多表的一对多修改 多表的多对多修改 前情提要: 最近认识了不少大佬,大佬开着保时捷. .一顿狂奔..我连车尾灯都看不到.. 本次内容 ORM 的多表链接 查 ...
- L09-Linux系统修改网卡名称(eth1修改为eth0)
一.环境 VirtualBox + CentOS6.5 二.问题 有时候在克隆服务器之后配置网络时,或者在维护别人建好的服务器时,会遇到这样一种情况.如下图所示: 即:在接口配置文件ifcfg-e ...
- ubuntu 镜像站部署
定时任务 #mirror web */5 * * * * cd /mirror && git pull #mysql mirror 0 */3 * * * rsync -av --de ...
- AngularJS Directive 命名规则
使用规则 在HTML代码中,使用的是连接符的形式,下面我们对比看看命名和使用的对应字符串: 命名 使用 people people peopleList people-list peopleListA ...
- HBase Cli相关操作
修改HBase表结构之前首先需要disable表,然后进行更改相关表结构信息,最后enable表,如下 1. 动态添加一个或多个列簇 hbase(main):034:0> describe 'H ...
- EF基础知识小记五(一对多、多对多处理)
本文主要讲EF一对多关系和多对多关系的建立 一.模型设计器 1.一对多关系 右键设计器新增关联 导航属性和外键属性可修改 2.多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生 ...
- thymeleaf的常见问题汇总
thymeleaf的常见问题汇总 1.thymeleaf th:href 多个参数传递格式 th:href="@{/Controller/update(param1=1,param2=${p ...
- SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: GIT地址 ...
- Apache解析和绑定域名
转载+修改 如果你想让你上线项目的域名解析的是你本地的IP,该怎么做呢?难道要一个个的改配置文件吗? 例 :域名为 aaa.com 端口默认为80. 我试图修改为8080端口,但是出错了 1.本地h ...
- 友盟在部分手机上在进程被kill的情况下接收不到推送的问题
app集成友盟推送后就能接收推送消息,即使在进程被kill的情况下也能接收.这个因为友盟有长连互保,用户设备中任何一个集成过友盟推送的app打开,即使他的app没打开也能启动push service, ...