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