码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ2698染色

时间:2016-08-21 22:29:37      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

2698: 染色

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 223  Solved: 150
[Submit][Status][Discuss]

Description

技术分享

 

Input

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

Output

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

输出
5 1 2 3
染色一次共有7种等概率方案(题目描述中提到),其中染2个格子有4种,染3个格子有3种,期望值为2*4/7+3*3/7=2.429。
 
数据范围
       1 ≤ S ≤ T ≤ N ≤ 1000000,0 ≤ M ≤ 1000000
题解:
技术分享
技术分享
/*
    ÎðÍü³õÐÄ£¬¾öÕ½¿ªÊ¼! 
*/ 
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#define N 1000005
using namespace std;
double ans,p[N],tot;
int n,m,s,t;
int read()
{
    int x=0,f=1; char ch;
    while (ch=getchar(),ch<0||ch>9) if (ch==-) f=-1;
    while (x=x*10+ch-0,ch=getchar(),ch>=0&&ch<=9);
    return x*f;
} 
double fastpower(double x,int k)
{
    double res=1.0;
    for (; k; k>>=1,x=x*x)  if (k&1) res=res*x;
    return res;
}
double get(int x,int l,int r)
{
    return 1.0*(x-l+1+x-r+1)*(r-l+1)/2;
}
int main()
{
    n=read(); m=read(); s=read(); t=read();
    ans=0;
    tot=get(n,s,t);
    for (int i=s; i<=n; i++) p[i]+=get(i-1,s,min(i-1,t));
    for (int i=1; i<=n-s; i++) p[i]+=get(n-i,s,min(n-i,t));
    for (int i=1; i<=n; i++) ans+=1-fastpower(p[i]/tot,m);
    printf("%0.3lf",ans);
    return 0;
    
}
View Code

 

 

BZOJ2698染色

标签:

原文地址:http://www.cnblogs.com/HQHQ/p/5793618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!