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;
}

浙公网安备 33010602011771号