CodeForces 621C 数学概率期望计算
昨天训练赛的题..比划了好久才想出来什么意思
之前想的是暴力for循环求出来然后储存数组 后来又想了想 自己萌的可以..
思路就是求出来每个人与他的右边的人在一起能拿钱的概率(V(或)的关系)然后*2000
又想起高考概率无情的2分...哭一会先
另外 这题的输出我没看懂...试了好几遍才过...(好吧我承认我看答案了)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<map>
using namespace std;
int n,p;
int l[100050];
int r[100050];
int main()
{
while(~scanf("%d%d",&n,&p))
{
for(int i=0;i<n;i++)
{
scanf("%d%d",&l[i],&r[i]);
}
l[n]=l[0];
r[n]=r[0];
double sum=0;
for(int i=0;i<n;i++)
{
int x=(r[i]/p-(l[i]-1)/p);/// 偶数数量
int y=(r[i+1]/p-(l[i+1]-1)/p);
int xx=(r[i]-l[i]+1)-x; ///奇数数量
int yy=(r[i+1]-l[i+1]+1)-y;
double z=1.0-1.0*(xx*1.0*yy)/(r[i]-l[i]+1)/(r[i+1]-l[i+1]+1);
sum+=2000.0*z;
}
printf("%.6f\n",sum);
}
}
浙公网安备 33010602011771号