zoukankan      html  css  js  c++  java
  • 【BZOJ2698】染色 期望

    【BZOJ2698】染色

    Description

    Input

    输入一行四个整数,分别为N、M、S和T。

    Output

      输出一行为期望值,保留3位小数。

    输入 输出 解释
    5 1 2 3 2.429 染色一次共有7种等概率方案(题目描述中提到),其中染2个格子有4种,染3个格子有3种,期望值为2*4/7+3*3/7=2.429。

    数据范围
           1 ≤ S ≤ T ≤ N ≤ 1000000,0 ≤ M ≤ 1000000

    题解:由于概率可加,所以我们只需要考虑每个位置被染色的概率即可。由于正着求不太容易,我们可以求每个位置不被染色的概率。具体做法:维护个前缀和乱搞即可。

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    typedef long long ll;
    typedef long double ld;
    ll n,m,l,r,tot;
    ld ans;
    ll s[1000010];
    ld pm(ld x,ll y)
    {
    	ld z=1.0;
    	while(y)
    	{
    		if(y&1)	z=z*x;
    		x=x*x,y>>=1;
    	}
    	return z;
    }
    int main()
    {
    	scanf("%lld%lld%lld%lld",&n,&m,&l,&r);
    	tot=(n-l+1+n-r+1)*(r-l+1)/2,ans=n;
    	ll i;
    	for(i=l;i<=n;i++)	s[i]=s[i-1]+min(r-l+1,i-l+1);
    	for(i=1;i<=n;i++)	ans-=pm((ld)(s[i-1]+s[n-i])/tot,m);
    	printf("%.3lf",(double)ans);
    	return 0;
    }
  • 相关阅读:
    14:求满足条件的3位数
    1696:逆波兰表达式
    筛法求素数 6分
    1751:分解因数
    1750:全排列
    1788:Pell数列
    666:放苹果
    06:寻宝
    04:最匹配的矩阵
    雷电
  • 原文地址:https://www.cnblogs.com/CQzhangyu/p/7391321.html
Copyright © 2011-2022 走看看