【Luogu1291】百事世界杯之旅(动态规划,数学期望)

题面

洛谷

题解

设\(f[i]\)表示已经集齐了\(i\)个名字的期望

现在有两种方法:

先说我自己的:

\[f[i]=f[i-1]+1+(1-p)(1*p^1+2*p^2+....)
\]

其中\(p=\frac{i-1}{n}\)

为什么,很简单

首先要多收集一个,期望\(+1\)是显然的

但是还可能一直买到了已经有的名字中的一个

有\(p\)的概率多买一个

\(p^2\)的概率多买两个

这样无穷的算下去

然后对于后面那个式子

做两次错位相减(其实就是一个无穷级数)

推出

\[f[i]=f[i-1]+1+\frac{i-1}{n-(i-1)}
\]

然后递推就行了

第二种方法:

\(fdf\)的方法(感觉这种方法也很强呀)

设\(f[i]\)表示已经收集了\(i\)个

收集到\(n\)个需要的期望

\[f[i]=\frac{i}{n}(f[i]+1)+\frac{n-i}{n}(f[i+1]+1)
\]

\[\frac{n-i}{n}f[i]=\frac{n-i}{n}f[i+1]+1
\]

\[f[i]=f[i+1]+\frac{n}{n-i}
\]

初值:\(f[n]=0\)

倒着算即可

贴上我自己的代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int n;
int ws(ll x)
{
int ret=0;
while(x)++ret,x/=10;
return ret;
}
struct Num
{
ll a,b;
void easy()
{
ll d=__gcd(a,b);
a/=d;b/=d;
}
void output()
{
easy();
if(b==1){printf("%lld\n",a);return;}
ll k=a/b;a-=k*b;
int blk=ws(k),ss=max(ws(a),ws(b));
for(int i=1;i<=blk;++i)putchar(' ');
printf("%lld\n",a);
printf("%lld",k);
for(int i=1;i<=ss;++i)putchar('-');putchar('\n');
for(int i=1;i<=blk;++i)putchar(' ');
printf("%lld\n",b);
}
}f[50];
Num operator+(Num a,Num b)
{
ll d=a.b/__gcd(a.b,b.b)*b.b;
return (Num){a.a*(d/a.b)+b.a*(d/b.b),d};
}
Num operator*(Num a,Num b)
{
Num c=(Num){a.a*b.a,a.b*b.b};
c.easy();
return c;
}
int main()
{
n=read();
f[0]=(Num){0,1};
for(int i=1;i<=n;++i)
{
f[i]=f[i-1]+(Num){1,1};
f[i]=f[i]+(Num){i-1,n-i+1};
}
f[n].output();
return 0;
}

【Luogu1291】百事世界杯之旅(动态规划,数学期望)的更多相关文章

  1. 洛谷P1291 [SHOI2002]百事世界杯之旅 [数学期望]

    题目传送门 百事世界杯之旅 题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听, ...

  2. [Luogu1291][SHOI2002]百事世界杯之旅

    题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...

  3. COGS 1224. [SHOI2002]百事世界杯之旅(期望概率)

    COGS 1224. [SHOI2002]百事世界杯之旅 ★   输入文件:pepsi.in   输出文件:pepsi.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] ...

  4. P1291 [SHOI2002]百事世界杯之旅(概率)

    P1291 [SHOI2002]百事世界杯之旅 设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数 则有: $f(n,k)=\frac{n-k}{n}*f(n,k) + \ ...

  5. P1291 [SHOI2002]百事世界杯之旅

    题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...

  6. 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告

    P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...

  7. luogu P1291 [SHOI2002]百事世界杯之旅

    题目链接 luogu P1291 [SHOI2002]百事世界杯之旅 题解 设\(f[k]\)表示还有\(k\)个球员没有收集到的概率 再买一瓶,买到的概率是\(k/n\),买不到的概率是\((n-k ...

  8. [SHOI2002]百事世界杯之旅

    题目:"--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯. ...

  9. 「SHOI2002」「LuoguP1291」百事世界杯之旅(UVA10288 Coupons)(期望,输出

    题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...

随机推荐

  1. Zabbix的网络发现

      Zabbix的网络发现 Zabbix的网络发现功能,可以让我们发现网络中的主机或者服务,并在发现该设备后做出相应的操作; 它可以用HTTP.ICMP.SSH.LDAP.TCP.SNMP.Telne ...

  2. 脚本启用python虚拟环境

    #!/bin/bash rm -rf /data/website/activities/virtualenvvirtualenv --no-site-packages -p python3 /data ...

  3. 哪些CSS是可以被继承的--简单整理

    那些CSS是可以被继承的--简单整理1.文本相关属性是继承的:font-size,font-family,line-height,text-index等2.列表相关属性是继承的:list-style- ...

  4. LVS的DR设置测试

    dir: ipvsadm -C 清空之前ipvsadm   iptables -t nat -F 防火墙规则清空v   rs1,rs2: vi /etc/sysconfig/network-scrip ...

  5. springboot入门_helloworld

    开始学习springboot,在此做记录,有不正确之处,还望读者指正. springboot框架的设计目的是用来简化新Spring应用的初始环境搭建以及开发过程.主要体现有:1 xml配置文件,使用s ...

  6. ucore文件系统详解

    最近一直在mooc上学习清华大学的操作系统课程,也算是复习下基本概念和原理,为接下来的找工作做准备. 每次深入底层源码都让我深感操作系统实现的琐碎,即使像ucore这样简单的kernel也让我烦躁不已 ...

  7. ASP.NET Core 使用 URL Rewrite 中间件实现 HTTP 重定向到 HTTPS

    在传统 ASP.NET 程序中,我们可以通过配置 IIS 的“URL 重写”功能实现将 HTTP 请求重定向为 HTTPS .但是该方法在 ASP.NET Core 应用中不再工作.在 ASP.NET ...

  8. Yii高级模板的安装

    1,如果你使用composer来安装的话,执行下边两条命令. composer global require "fxp/composer-asset-plugin:^1.2.0" ...

  9. dfs练习

    不给提示,练习. 题意: 蒜头的数学实在是太差了,于是老师把他关到小黑屋让他闭门修炼.老师跟他一张纸,上面一排写着1, 2, 3...N这N个数,中间用空白分隔.老师让他在空白处填上加号或者减号.他让 ...

  10. Java并发编程-线程可见性&线程封闭&指令重排序

    一.指令重排序 例子如下: public class Visibility1 { public static boolean ready; public static int number; } pu ...