LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)
解题思路
期望$dp$。因为这个是期望步数,所以要倒着推。那么这道题就变得一脸可做了,设$f[i]$表示还有$i$张牌没有收集的期望,那么考虑再抽一张,有$(n-i)/n$的概率抽到抽过的牌,有$i/n$的概率抽到没有抽过的牌。那么转移方程就是: $f[i]=f[i]*\dfrac{(n-i)}{n}+f[i-1]*\dfrac {i}{n}+1 $。但这样是没法继续写的,因为方程两边有同一个未知数,所以移项可得 $f[i]=f[i-1]+\dfrac{n}{i}$。
输出的格式真的6,因为要输出分数,所以要记下来分母和分子,用一个结构体记录,重载一下$+$就行了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm> using namespace std;
const int MAXN = ;
typedef long long LL; int n,cnt,num;
struct Node{
LL a,b;
Node(LL u=,LL v=) {a=u;b=v;}
friend Node operator+(const Node A,const Node B){
Node ret;ret.a=ret.b=;
ret.a=A.a*B.b+A.b*B.a;
ret.b=A.b*B.b;
LL gcd=__gcd(ret.a,ret.b);
ret.a/=gcd;ret.b/=gcd;
return ret;
}
}f[MAXN]; //f[i]=f[i-1]*i/n+f[i]*(n-i)/n+1
//f[i]=f[i-1]+n/i int main(){
cin>>n;
for(int i=;i<=n;i++)
f[i]=f[i-]+Node(n,i);
if(f[n].b==) printf("%lld",f[n].a);
else{
LL now=f[n].a/f[n].b;
LL fuck=now;
while(fuck) {cnt++;fuck/=;}
for(int i=;i<=cnt;i++) putchar(' ');
printf("%lld\n",f[n].a-now*f[n].b);
if(now) printf("%lld",now);
LL shit=f[n].b;
while(shit) {num++;shit/=;}
for(int i=;i<=num;i++) putchar('-');putchar('\n');
// printf("-\n");
for(int i=;i<=cnt;i++) putchar(' ');
printf("%lld\n",f[n].b);
}
return ;
}
LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)的更多相关文章
- 洛谷P1291 [SHOI2002]百事世界杯之旅(期望DP)
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅——期望DP
题目:https://www.luogu.org/problemnew/show/P1291 水水的经典期望DP: 输出有毒.(其实也很简单啦) 代码如下: #include<iostream& ...
- luogu P1291 [SHOI2002]百事世界杯之旅
题目链接 luogu P1291 [SHOI2002]百事世界杯之旅 题解 设\(f[k]\)表示还有\(k\)个球员没有收集到的概率 再买一瓶,买到的概率是\(k/n\),买不到的概率是\((n-k ...
- P1291 [SHOI2002]百事世界杯之旅(概率)
P1291 [SHOI2002]百事世界杯之旅 设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数 则有: $f(n,k)=\frac{n-k}{n}*f(n,k) + \ ...
- 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告
P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...
- 【题解】P1291 百事世界杯之旅 - 期望dp
P1291 [SHOI2002]百事世界杯之旅 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 "--在 \ ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅 [数学期望]
题目传送门 百事世界杯之旅 题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听, ...
- P1291 [SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- ●洛谷P1291 [SHOI2002]百事世界杯之旅
题链: https://www.luogu.org/recordnew/show/5861351题解: dp,期望 定义dp[i]表示还剩下i个盖子没收集时,期望还需要多少次才能手机完. 初始值:dp ...
随机推荐
- 2018今日头条湖北省赛【A】
[题目链接]https://www.nowcoder.com/acm/contest/104/A 这题就是很简单的几何题..md现场推了很久的cos sin仿佛像个zz.自己都想给自己一巴掌. 题意就 ...
- drools原生drl规则文件的使用
在初识drools中对drl文件进行了简单的介绍.这里举个例子来具体说明下.主要是写了规则之后我们如何用java代码来run起来. drl文件内容如下: rule "ageUp12" ...
- 【学术篇】SDOI2009 学校食堂
传送门~ 题目大意 先分析\((x\ or\ y)-(x\ and\ y)\), 就是\(x\)和\(y\)中存在的1减去\(x\)和\(y\)中相同的1 *那不就是\(x\ xor\ y\)么←_← ...
- windows 10 无法启动 windows update 服务 错误 0x80070005 拒绝访问
windows 10 无法启动 windows update 服务 错误 0x80070005 拒绝访问: 解决方法: 首先重命名系统盘 windows目录下的代号为“SoftwareDistribu ...
- Python全栈开发:django网络框架(一)
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- drupal7 代码生成用户,并自动登录
直接上代码 1. 生成用户(注册) $edit = [ "name" => "name", "pass" => "pa ...
- 0918CSP-S模拟测试赛后总结
14名.110分.可以算是几次大落之后的一次小小的崛起?? 然而sdfz的开挂选手AK了啊…… T2重测前rank7我就高兴地像个傻子??也不看看这次T1是个什么题. 实力还是不行.一眼秒掉了简单题, ...
- 解决k8s gcr.io被墙下载不了镜像的问题
gcr.io镜像 根据开源项目: https://github.com/anjia0532/gcr.io_mirror 作者将gcr.io相关镜像pull下来,然后push到docker官方仓库htt ...
- Vue+Iview+Node 项目结构和配置
1.项目调整后的目录 api:数据接口定义 assets:静态文件 components:组件 config:项目相关配置 driective:指令 router:路由 store:状态管 ...
- mysql索引原理深度解析
mysql索引原理深度解析 一.总结 一句话总结: mysql索引是b+树,因为b+树在范围查找.节点查找等方面优化 hash索引,完全平衡二叉树,b树等 1.数据库中最常见的慢查询优化方式是什么? ...