●洛谷P1291 [SHOI2002]百事世界杯之旅
题链:
https://www.luogu.org/recordnew/show/5861351
题解:
dp,期望
定义dp[i]表示还剩下i个盖子没收集时,期望还需要多少次才能手机完。
初始值:dp[0]=0
显然对于一个状态,我们随机得到一个盖子,有两种可能:
1.得到了曾经没有的盖子,概率为i/N,并转移到dp[i-1]。
2.得到了已经有了的盖子,概率为(N-i)/N,并转移到dp[i]。
所以dp转移式:
dp[i]=(i/n)*dp[i-1]+((N-i)/i)*dp[i]+1(加一表示本次的操作对答案贡献了1的值)
移项:
(i/N)dp[i]=(i/N)dp[i-1]+1
dp[i]=dp[i-1]+(N/i)
然后按上式累加起来就是答案了。
代码:
#include<bits/stdc++.h>
using namespace std;
int N;
long long getcnt(long long rtm){
int cnt=0;
while(rtm) cnt++,rtm/=10;
return cnt;
}
long long gcd(long long a,long long b){
while(b^=a^=b^=a%=b);
return a;
}
int main(){
cin>>N;
long long a=0,b=1;
for(long long i=1,g;i<=N;i++)
g=gcd(b,i),b=b/g*i;
for(long long i=1,g;i<=N;i++)
g=b/i,a+=N*g;
if(a%b==0) cout<<a/b;
else{
long long c=a/b;
a=a-c*b;
long long g=gcd(a,b);
a/=g; b/=g;
long long cntc=getcnt(c);
long long cnta=getcnt(a);
long long cntb=getcnt(b);
cout<<setfill(' ')<<setw(cntc+cnta)<<right<<a<<endl;
cout<<setfill('-')<<setw(max(cnta,cntb)+cntc)<<left<<c<<endl;
cout<<setfill(' ')<<setw(cntc+cntb)<<right<<b<<endl;
}
return 0;
}
●洛谷P1291 [SHOI2002]百事世界杯之旅的更多相关文章
- 洛谷 P1291 [SHOI2002]百事世界杯之旅 解题报告
P1291 [SHOI2002]百事世界杯之旅 题目描述 "--在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽 ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅 [数学期望]
题目传送门 百事世界杯之旅 题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听, ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅(期望DP)
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅——期望DP
题目:https://www.luogu.org/problemnew/show/P1291 水水的经典期望DP: 输出有毒.(其实也很简单啦) 代码如下: #include<iostream& ...
- 洛谷P1291 [SHOI2002]百事世界杯之旅
题目链接: kma 题目分析: 收集邮票的弱弱弱弱化版,因为是期望,考虑倒推 设\(f[i]\)表示现在已经买齐了\(i\)种,距离买完它的剩余期望次数 那么下一次抽有\(\frac{i}{n}\)的 ...
- 洛谷 1291 [SHOI2002]百事世界杯之旅
题目:https://www.luogu.org/problemnew/show/P1291 大水题!套路!模板! 稍微注意一下输出就行了. #include<iostream> #inc ...
- P1291 [SHOI2002]百事世界杯之旅(概率)
P1291 [SHOI2002]百事世界杯之旅 设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数 则有: $f(n,k)=\frac{n-k}{n}*f(n,k) + \ ...
- luogu P1291 [SHOI2002]百事世界杯之旅
题目链接 luogu P1291 [SHOI2002]百事世界杯之旅 题解 设\(f[k]\)表示还有\(k\)个球员没有收集到的概率 再买一瓶,买到的概率是\(k/n\),买不到的概率是\((n-k ...
- P1291 [SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
随机推荐
- 项目Alpha冲刺Day8
一.会议照片 二.项目进展 1.今日安排 前端界面框架基本完成,剩下侧边栏与权限相关部分未完成.前端路由异常拦截完成.项目结构与开发流程规定完成.后台开发规定小变更. 2.问题困难 组件的拆分与否和组 ...
- Storm概念讲解和工作原理介绍
Strom的结构 Storm与传统关系型数据库 传统关系型数据库是先存后计算,而storm则是先算后存,甚至不存 传统关系型数据库很难部署实时计算,只能部署定时任务统计分析窗口数据 ...
- initializer element is not a compile-time constant
初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值! 如下就会报这个错误(KUIScreenWidth)是变量 static CGFloat const topButtonWidt ...
- java 1.7新特性
try( ... ){ ... } catch(xxx e){ ... } java1.7特性,叫做try-with-resource,实现了AutoCloseable接口的实例可以放在try(... ...
- Css之导航栏下拉菜单
Css: /*下拉菜单学习-2017.12.17 20:17 added by ldb*/ ul{ list-style-type:none; margin:; padding:; overflow: ...
- 在bootstrap中让竖向排列的输入框水平排列
在bootstrap中可以使用自带的样式标记来控制样式,但是同时可以利用最原始的css样式来解决达到需求 如下所示可以看出来两个inline-block就可以使得两个水平排列 block和inline ...
- 记一次向maven中央仓库提交依赖包
Maven是Java中最常用的依赖管理工具,Maven的中央仓库保罗万象,涵盖了各个领域的框架.工具和文档,也是Java生态强大生命力的体现.我们自己开发的一些有用有趣的代码也可以通过打包上传到mav ...
- android 运行时异常捕获
1,将运行时异常捕获并存到手机SD卡上 可以直接使用logcat 命令Runtime.getRuntime().exec("logcat -f "+ file.getAbsolut ...
- java之servlet小记
Servlet service+applet 服务+小程序 Java是语言,像c\c#等一样,是一门计算机语言,servlet是java ...
- Python内置函数(65)——staticmethod
英文文档: staticmethod(function) Return a static method for function. A static method does not receive a ...