好久不更了。。菜鸡还是要打ACM。。来博客拔一拔草(水题求不喷

题目链接

大意就是给一个初始获得奖励的概率PP
做任务可以使概率增加QQ
于是每做完一个任务就有一个概率XX
如果XX已经是100%100\%就获得奖励,否则有1−x1-x的概率得不到,要继续做任务
如果这次拿到了奖励那么概率变为⌊P2l⌋%\lfloor \dfrac{P}{2^l}\rfloor\%,其中ll是当前已经获得的奖励个数
现在要求获得NN次奖励的期望完成任务数
N≤106,P≤100,Q≤100N\leq10^6,P\leq100,Q\leq100

那么期望的计算式可以写成Ei=Σpk∗lkE_i=\Sigma{p_k*l_k},其中pkp_k表示做了lkl_k个任务后拿到i个奖励的概率
用PiP_i表示⌊P2i⌋%\lfloor \dfrac{P}{2^i}\rfloor\%
接着考虑Ei+1=Σp′k∗l′kE_{i+1}=\Sigma{p'_k*l'_k}
=Pi+1∗Σpk∗(lk+1)=P_{i+1}*\Sigma{p_k*(l_k+1)}
+(1−Pi+1)∗(Pi+1+Q%)∗Σpk∗(lk+2)+(1-P_{i+1})*(P_{i+1}+Q\%)*\Sigma{p_k*(l_k+2)}
+(1−Pi+1)∗(1−Pi+1−Q%)∗(Pi+1+2Q%)∗Σpk∗(lk+3)+...+(1-P_{i+1})*(1-P_{i+1}-Q\%)*(P_{i+1}+2Q\%)*\Sigma{p_k*(l_k+3)}+...
直到Pi+1+kQ%P_{i+1}+kQ\%超过11结束
于是用ci=Σpkc_i=\Sigma{p_k}
Ei+1=Σp′k∗l′kE_{i+1}=\Sigma{p'_k*l'_k}
=Pi+1∗(Ei+ci)=P_{i+1}*(E_i+c_i)
+(1−Pi+1)∗(Pi+1+Q%)∗(Ei+2ci)+(1-P_{i+1})*(P_{i+1}+Q\%)*(E_i+2c_i)
+(1−Pi+1)∗(1−Pi+1−Q%)∗(Pi+1+2Q%)∗(Ei+3ci)+...+(1-P_{i+1})*(1-P_{i+1}-Q\%)*(P_{i+1}+2Q\%)*(E_i+3c_i)+...
每次计算的次数不会超过100100,复杂度上界为O(100N)O(100N)

注意当i≥8i\geq8的时候Pi为0,如果在i很大的时候直接计算Pi会出问题P_i为0,如果在i很大的时候直接计算P_i会出问题

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define pii pair<int, int>
#define mp make_pair
#define ull unsigned long long
#define null NULL
#define sc(x) scanf("%d", &x)
#define sc64(x) scanf("%I64d", &x)
#define scln(x) scanf("%d\n", &x)
#define sc64ln(x) scanf("%I64d\n", &x)
#define pr(x) printf("%d", x)
#define prln(x) printf("%d\n", x)
#define prsp(x) printf("%d ", x)
#define pr64(x) printf("%I64d", x)
#define pr64ln(x) printf("%I64d\n", x)
#define pr64sp(x) printf("%I64d ", x)
#define rep(i,n) for (int i = 1;i <= (n); ++i)
#define repr(i,n) for (int i = (n);i > 0; --i)
#define repab(i,a,b) for (int i = a;i <= b; ++i)
#define Rep(i,n) for (int i = 0;i < (n); ++i)
#define Repr(i,n) for (int i = (n)-1;i >= 0; --i)
#define Repab(i,a,b) for (int i = a;i < b; ++i)
#define SET(__set, val) memset(__set, val, sizeof __set)typedef long double ld;
typedef long long ll;
typedef pair<ll, ll> pll;template<class T> T gcd(T a, T b){if(!b)return a;return gcd(b,a%b);}
template<class T> T power(T a, T b){T res(1);while(b){if(b&1)res=res*a;a=a*a;b>>=1;}return res;}
template<class T> T powerM(T a, T b, T mod){T res(1);while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res;}const int infi = 2147483647;
const ll infl = 9223372036854775807;#define N 1111000
#define M 1000
int n, m, k;
double f[N], c[N];
int main()
{double p, q, p1, p2;sc(m), sc(k), sc(n);p1 = p = m, q = k;p2 = 1.0;p1 /= 100;f[1] = 0.0;rep(i,100){f[1] += (p1*p2)*i;c[1] += p1*p2;if (p1 == 1)break;p2 *= 1-p1;p1 += q/100;if (p1 > 1)p1 = 1;}repab(i,2,n){if (i >= 8)p1 = 0;elsep1 = floor(p/(1<<(i-1)))/100.0;p2 = 1.0;f[i] = 0.0;rep(j,100){f[i-1] += c[i-1];f[i] += p1*p2*f[i-1];c[i] += p1*p2;if (p1 == 1)break;p2 *= 1-p1;p1 += q/100;if (p1 > 1)p1 = 1;}}printf("%.2lf\n", f[n]);return 0;
}

[hihocoder1489][微软2017年预科生计划在线编程笔试][Legendary Items]相关推荐

  1. 微软2017年预科生计划在线编程笔试

    Legendary Items 答案是每一件物品需要的期望步数和 1 #include <bits/stdc++.h> 2 #define ll long long 3 #define u ...

  2. 微软预科生计划skype在线面试题

    给两个有序数组A和B,合并这两个数组到A中(A足够大) 将一个字符(char类型)的二进制逆转 给一个环,环上有n个加油站,每个加油站的油量已知,各个加油站的距离已知(即汽车在任意两个加油站的耗油量已 ...

  3. vivo 2020届校招在线编程笔试

    题目:运矿车 小v最近在玩一款挖矿的游戏,该游戏介绍如下: 1.每次可以挖到多个矿石,每个矿石的重量都不一样,挖矿结束后需要通过一款平衡矿车运送下山: 2.平衡矿车有左右2个车厢,中间只有1个车轮沿着 ...

  4. vivo 2020届校招在线编程笔试B卷

    1.小v最近在玩一款挖矿的游戏,该游戏介绍如下: 1.每次可以挖到多个矿石,每个矿石的重量都不一样,挖矿结束后需要通过一款平衡矿车运送下山: 2.平衡矿车有左右2个车厢,中间只有1个车轮沿着导轨滑到山 ...

  5. vivo 2020届校招在线编程笔试A卷

    1.小v是公司的运维工程师,现有一个有关应用程序部署的任务如下: 1.一台服务器的磁盘空间.内存是固定的,现在有N个应用程序要部署: 2.每个应用程序所需要的磁盘.内存不同,每个应用程序允许访问的用户 ...

  6. java在线编程题_阿里笔试题(2017在线编程题)-- 数串分组 --Java实现

    看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...

  7. 阿里笔试题(2017在线编程题)-- 数串分组 --Java实现

    看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...

  8. Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘)

    Casbin明日之星预选生计划-Talent for Casbin 2021(长期招聘) "Casbin明日之星预选生计划-Talent for Casbin 2021"是什么? ...

  9. 梁迪:我为MVP骄傲,《微软最有价值专家奖励计划介绍》附专题视频

    题记:有些事情,比 MVP 更加不朽,浩气长空,日月星汉,我们为 MVP 和那些心目中的"MVP"感到骄傲.微软 MVP 是一种追求,不必要去强求,但 MVP 必定是俱乐部发展的根 ...

最新文章

  1. Ubuntu开机自启动 读取.bashrc
  2. UVa1422 - Processor(二分法)
  3. %@ INCLUDE FILE=%与JSP:INCLUDE PAGE=/区别
  4. .NET中的异步编程(四)- IO完成端口以及FileStream.BeginRead
  5. 洛谷 P1706 P1036 -小试牛刀
  6. 项目管理(1):备战pmp
  7. 《C++ Primer 5th》笔记(4 / 19):表达式
  8. wpf mvvm MenuItem的Command事件
  9. Java虚拟机(JVM)之类的加载过程详解
  10. SpringBoot(十四)_springboot使用内置定时任务Scheduled的使用(一)
  11. 女生,到底能不能当程序员?
  12. Bailian4047 全排列【全排列】
  13. AcWing 1945. 奶牛棒球(枚举+二分)
  14. 在线java面试题库_Java笔试题库
  15. C语言入门项目篇:贪吃蛇(完整代码+详细注释)
  16. Google Chrome谷歌浏览器繁体字修改为简体字
  17. 计算机病毒学,计算机病毒学.doc
  18. 翻译: 巴菲特公式:睡觉比醒来更聪明
  19. Protobuf协议格式详解
  20. 数值计算(三)-插值法(2)牛顿插值法

热门文章

  1. 软件系统分析与设计作业1
  2. Axure RP Extension安装
  3. vue3.0+vuex+typescript 入门项目描述
  4. H∞输出反馈控制器推导(最后含例子及程序)
  5. RiruEdxposed学习研究(一)手把手安装Edxposed
  6. 一次解决时区所有疑问
  7. python processing_python --- mulitprocessing(多进程)模块使用
  8. 域名出售页面html模板,域名出售页面html模板
  9. 湾区新势力 智创大未来,数说故事大湾区总部一周年暨琴澳战略发布会成功举办
  10. 面包旅行Android业务设计分析