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;

}

  

 

 

你可能感兴趣的:(time)