HDU 4355 Party All the Time(仅仅为了30次提交)

题目链接

我没看清题目用了int+四舍五入竟然搞了30次。。。三分随便从网上找了个模版。。。话说当时感觉应该是三分,可是就是这么悲剧。。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50001
struct node
{
    double x;
    double w;
} p[N];
int n;
double getsum(double mid)
{
    int i;
    double tt,sum = 0;
    for(i = 0; i <= n-1; i ++)
    {
        tt = p[i].x-mid;
        if(tt < 0)
            tt = -tt;
        sum += tt*tt*tt*p[i].w;
    }
    return sum;
}
int main()
{
    int t,i,num = 0;
    double min,max,start,end,mid1,mid2,a3,a4;
    scanf("%d",&t);
    while(t--)
    {
        num ++;
        scanf("%d",&n);
        for(i = 0; i <= n-1; i ++)
        {
            scanf("%lf%lf",&p[i].x,&p[i].w);
            if(i == 0)
            {
                max = min = p[i].x;
            }
            if(max < p[i].x)
                max = p[i].x;
            if(min > p[i].x)
                min = p[i].x;
        }
        printf("Case #%d: ",num);
        start = min;
        end = max;
        while(start+0.0000001<end)
        {
            mid1 = (start+end)/2;
            mid2 = (end +mid1) / 2;
            a3 = getsum(mid1);
            a4 = getsum(mid2);
            if(a3 <= a4)
            {
                end = mid2;
            }
            else
            start = mid1;
        }
        min = getsum(start);
        printf("%.0lf\n",min);
    }
    return 0;
}

  

 

 

posted @ 2012-08-09 21:07  Naix_x  阅读(225)  评论(0编辑  收藏  举报