荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: huhaiming (一生只爱她), 信区: Program
标  题: 1007忘了贴,呵呵
发信站: 荔园晨风BBS站 (Mon May 26 11:07:13 2003), 站内信件

//ZOJ Monthly, May 2003 Contest 1007
//Calculate the Integral
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int n,m,count[200],c[100],d[100];
double a[100],b[100],x[200];

int cmp(const void *p1,const void *p2){
        double t1=*(double *)p1,t2=*(double *)p2;
        if (t1>t2+1e-10) return 1;
        else if (t1<t2-1e-10) return -1;
        else return 0;
}

int bisearch(double y)
{
        int p=0,q=m-1,t;
        while(p<=q){
                t=(p+q)/2;
                if (y>x[t]+1e-10) p=t+1;
                else if (y<x[t]-1e-10) q=t-1;
                else return t;
        }
        return -1;
}

void compress()
{
        int i,j;
        qsort(x,m,sizeof(double),cmp);
        for(i=1,j=0;i<m;i++) if (fabs(x[i]-x[j])>1e-10) x[++j]=x[i];
        m=j+1;
        memset(count,0,sizeof(count));
        for(i=0;i<n;i++){
                c[i]=bisearch(a[i]);
                d[i]=bisearch(b[i]);
                for(j=c[i];j<d[i];j++) count[j]++;
        }
}

int main()
{
        int i;
        double t;
        freopen("1007.in","r",stdin);
        while(scanf("%d",&n)!=EOF){
                m=0;
                for(i=0;i<n;i++){
                        scanf("%lf%lf",&a[i],&b[i]);
                        x[m++]=a[i],x[m++]=b[i];
                }
                compress();
                t=0;
                for(i=0;i<m-1;i++) if (count[i]>0){
                        t+=(x[i+1]-x[i])*(pow(n,count[i])-1);
                }
                printf("%d\n%.10e\n",n,t);
        }
        return 0;
}

--

菩提本无树,明镜亦非台

本来无一物,何处惹尘埃

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.200]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店