cf#341-C. Wet Shark and Flowers-数学-概率计算

来源:互联网 发布:淘宝网智能手机 编辑:程序博客网 时间:2024/05/29 02:16

。。。。

求的是 期望嘛。。。

range[i]=R[i]-L[i]+1 

我们设【l,r】之间,p的倍数的个数为tm[i], 

那么每一对 i,i+1他们每场 赢钱的 概率是 pi=【tm[i]*range[i+1]+tm[i+1]*range[i]-tm[i]*tm[i+1]  】 /  (range[i]*rangr[i+1])

而他们 每次赢钱是 2个人各得一千,也就是pi*2000;

所以for (i=1;i<=n;i++ ) ans+= pi*2000  ; 便是答案;


至于如何计算【l,r】之间p的倍数,比赛的时候想的办法比较蠢。 先二分找到第一个大于等于l的倍数,再二分找到第一个大于等于R的倍数,两者相减+1便是 p的倍数的个数了  (边界特判)


后来发现还可以这样算 o(1):  (别人的代码)

int get_cnt(int x, int y){if(x % p == 0) return (y - x) / p + 1;int t = p - x % p + x;if(y < t) return 0;return (y - t) / p + 1;}

先判断如果x是p的倍数,那么 (y-x)/p+1便是答案

否则,求出x之后的第一个p的倍数,也就是t,然后如果t>Y 表示区间不存在p的倍数,否则就转为前面的情况了(y-t)/p+1为答案



比赛的代码:

#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <queue>#include <map>#include <set>#include <vector>#include<stack>using namespace std; __int64 L[100005];//副对角线元素之和 __int64 R[100005]; //主对角线元素之和  __int64 tm[100005];__int64 range[100005]; __int64 n,p;__int64 solve(__int64 x ){__int64 l=0;__int64 r=1000000000;__int64 mid; while(l<=r){if (r-l<=1){if (l*p>=x)return l;else{if (r*p>=x)return r; }  }mid=(l+r)/2;if (mid*p>=x)r=mid;elsel=mid+1;} }  int main(){  __int64 i,x,y;scanf("%I64d%I64d",&n,&p);  for (i=1;i<=n;i++){scanf("%I64d%I64d",&L[i],&R[i]);range[i]=R[i]-L[i]+1;__int64 ret1=solve(L[i]);__int64 ret2=solve(R[i]);if (ret2*p!=R[i])ret2--;tm[i]=ret2-ret1+1; }double ans=0;double upsum=0;double downsum=0;for (i=1;i<=n-1;i++){upsum=tm[i]*range[i+1]+ tm[i+1]*range[i]- tm[i]*tm[i+1];downsum=range[i]*range[i+1]; ans+=upsum*2000/downsum;}upsum=tm[1]*range[n]+ tm[n]*range[1]- tm[1]*tm[n];downsum=range[1]*range[n]; ans+=upsum*2000/downsum;printf("%.6lf\n" ,ans); return 0;} 

 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕28周还是臀位怎么办 怀孕五个月胎位不正怎么办 33周了胎位不正怎么办 足月胎儿不足5斤怎么办 绒癌观察期怀孕怎么办 宝宝囱门闭合晚怎么办 慢性硬脑膜下血肿复发怎么办 佝偻病导致囟门晚闭怎么办 儿童液体补多了怎么办 脑脊液鼻漏3年了怎么办 结石掉到膀胱里怎么办 肾结石引起的腰疼怎么办 肾结石小但很疼怎么办 狗狗得了尿结石怎么办 生理期第四天必须游泳怎么办 碎石后吐的厉害怎么办 白细胞高红细胞高血尿怎么办? 早期肾癌术后复发该怎么办 肾结石因运动引起尿血怎么办 宝宝大便镜检阳性潜血怎么办 尿不尽刺痛带血怎么办 狗狗拉肚子拉血怎么办 肾血肿怎么办才吸收快 体检尿蛋白高3怎么办 肾炎会引起脸肿怎么办 12小孩尿蛋白3是怎么办 肝癌介入手术后肝功能不好怎么办 屁多且臭便秘怎么办 肝癌术1年后复发怎么办 怀孕便秘怎么办或大便太干拉不出 肠鸣便秘怎么办多尿 奥司他韦过量怎么办 憋的时间长尿痛怎么办 手过敏了怎么办最简单 肾结石不痛但是有血尿怎么办 儿童医院血液科挂不到号怎么办 搬完重物手抖怎么办 弯腰搬重物腰疼怎么办 搬了重物后腰疼怎么办 例假不走公务员体检血尿怎么办 憋尿久了尿不出来怎么办