UVA 10288 - Coupons

option=com_onlinejudge&Itemid=8&page=show_problem&category=482&problem=1229&mosmsg=Submission+received+with+ID+13896541" target="_blank" style="">题目链接

题意:n个张票,每张票取到概率等价,问连续取一定次数后,拥有全部的票的期望

思路:递推。f[i]表示还差i张票的时候期望,那么递推式为

f(i)=f(i)∗(n−i)/n+f(i−1)∗i/n+1
化简后递推就可以,输出要输出分数比較麻烦

代码:

#include <cstdio>
#include <cstring>
#include <cmath> long long gcd(long long a, long long b) {
if (!b) return a;
return gcd(b, a % b);
} long long lcm(long long a, long long b) {
a = a / gcd(a, b) * b;
if (a < 0) a = -a;
return a;
} struct Fraction {
long long a, b;
Fraction() {a = 0; b = 1;} Fraction(long long x) {
a = x; b = 1;
} Fraction(long long x, long long y) {
a = x; b = y;
} void deal() {
if (b < 0) {b = -b; a = -a;}
long long k = gcd(a, b);
if (k < 0) k = -k;
a /= k; b /= k;
} Fraction operator+(Fraction p) {
Fraction ans;
ans.b = lcm(b, p.b);
ans.a = ans.b / b * a + ans.b / p.b * p.a;
ans.deal();
return ans;
} Fraction operator-(Fraction p) {
Fraction ans;
ans.b = lcm(b, p.b);
ans.a = ans.b / b * a - ans.b / p.b * p.a;
ans.deal();
return ans;
} Fraction operator*(Fraction p) {
Fraction ans;
ans.a = a * p.a;
ans.b = b * p.b;
ans.deal();
return ans;
} Fraction operator/(Fraction p) {
Fraction ans;
ans.a = a * p.b;
ans.b = b * p.a;
ans.deal();
return ans;
} void operator=(int x) {
a = x;
b = 1;
} void print() {
if (a == 0) {printf("0\n"); return;}
if (a % b == 0) {printf("%lld\n", a / b); return;}
int sn = 0;
if (a / b > 0) {
long long num = a / b;
while (num) {
num /= 10;
sn++;
}
}
if (sn) for (int i = 0; i <= sn; i++) printf(" ");
printf("%lld\n", a % b);
long long num = b;
int cnt = 0;
while (num) {
num /= 10;
cnt++;
}
printf("%lld ", a / b);
for (int i = 0; i < cnt; i++) printf("-");
printf("\n");
for (int i = 0; i <= sn; i++) printf(" ");
printf("%lld\n", b);
}
}; Fraction dp[35][35];
int n; int main() {
for (long long i = 1; i <= 33; i++) {
dp[i][0] = 0;
for (long long j = 1; j <= i; j++)
dp[i][j] = (dp[i][j - 1] * Fraction(j, i) + Fraction(1)) * Fraction(i, j);
}
while (~scanf("%d", &n)) {
dp[n][n].print();
}
return 0;
}

UVA 10288 - Coupons(概率递推)的更多相关文章

  1. UVA 557 - Burger(概率 递推)

     Burger  When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was ...

  2. UVA 11021 - Tribles(概率递推)

    UVA 11021 - Tribles 题目链接 题意:k个毛球,每一个毛球死后会产生i个毛球的概率为pi.问m天后,全部毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率.那么 f(i)=p ...

  3. UVa 557 Burger (概率+递推)

    题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...

  4. UVA 1541 - To Bet or Not To Bet(概率递推)

    UVA 1541 - To Bet or Not To Bet 题目链接 题意:这题题意真是神了- -.看半天,大概是玩一个游戏,開始在位置0.终点在位置m + 1,每次扔一个硬币,正面走一步,反面走 ...

  5. UVa 557 (概率 递推) Burger

    题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...

  6. UVA 11021 Tribles(递推+概率)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 [思路] 递推+概率. 设f[i]表示一只Tribble经 ...

  7. UVa 12034 - Race(递推 + 杨辉三角)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. uva 11375 Matches (递推)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  9. UVa 10561 (SG函数 递推) Treblecross

    如果已经有三个相邻的X,则先手已经输了. 如果有两个相邻的X或者两个X相隔一个.,那么先手一定胜. 除去上面两种情况,每个X周围两个格子不能再放X了,因为放完之后,对手下一轮再放一个就输了. 最后当“ ...

随机推荐

  1. iOS之绘制像素到屏幕

    译注:这篇文章虽然比较长,但是里面的内容还是很有价值的. 像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数.这里我们讲一下这个过程背后的东西. ...

  2. node.js从入门到放弃(一)

    以下内容全是我个人理解写出,如有不对,请立刻练习本人进行更改.以免被刚入门的被我带入坑里. —node是什么?我想大家应该都知道. node是前端未来干掉后端的一种语言,是用JavaScript来编写 ...

  3. 【简●解】[HAOI2007] 理想的正方形

    [简●解][HAOI2007] 理想的正方形 可恶的\(DP\). [题目大意] 有一个\(a*b\)的整数组成的矩阵,现请你从中找出一个\(n*n\)的正方形区域,使得该区域所有数中的最大值和最小值 ...

  4. luogu P4752

    给定一个数字 A ,这个 A 由 a1,a2,...,aN 相乘得到. 给定一个数字 B ,这个 B 由 b1,b2,⋯,bM 相乘得到. 如果 A/B​ 是一个质数,请输出YES,否则输出NO. 输 ...

  5. 分享下找到的Github上大神的EmpireofCode进攻策略:反正我是用了没反应,改了代码后单位不进攻,蠢站在那里,我自己的策略调调能打败不少人,这个日后慢慢研究吧,Github上暂时找到的唯一策略

    from queue import PriorityQueue from enum import Enum from battle import commander from battle impor ...

  6. pwnable.kr cmd1之write up

    看一下源代码: #include <stdio.h> #include <string.h> int filter(char* cmd){ ; r += strstr(cmd, ...

  7. POJ2421 Constructing Roads

    Constructing Roads 这道题很水,就是一个裸的最小生成树,最不过把已经连接的节点的值再设为0. 代码: #include<cstdio> #include<cstri ...

  8. 数列分段Section II(二分)

    洛谷传送门 输入时处理出最小的答案和最大的答案,然后二分答案即可. 其余细节看代码 #include <iostream> #include <cstdio> using na ...

  9. loadrunner 并发操作集合点配置

    在loadrunner的虚拟用户中,术语concurrent(并发)和simultaneous(同时)存在一些区别,concurrent 是指虚拟场景中参于运行的虚拟用户.而simultaneous与 ...

  10. msp430入门编程44

    msp430中C语言的人机交互--菜单交互方式