zoukankan      html  css  js  c++  java
  • 问题 H: 小k的简单问题

    问题 H: 小k的简单问题

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 107  解决: 57
    [提交] [状态] [命题人:jsu_admin]

    题目描述

    地图上有n个村庄,小k每个月需要往每个村庄运送数量不等的粮食,运送粮食到任意一个村庄需要消耗的费用为距离的平方乘以粮食的重量,现在小k打算在地图上建立粮食基地,请问将基地建在哪个地方才能让小k每个月消耗的费用最少?

    输入

    第一行包含一个整数 T,表示有 T组测试数据。
    接下来依次描述 T 组测试数据。对于每组测试数据:
    第一行为整数 n,表示有n个村庄。
    接下来 n 行,每行三个整数x,y,v,前两整数个为村庄的坐标,后面一个整数为该村庄每个月需要的粮食重量。
    0<T<20,0<n<20, -1000<=x,y<=1000,0<v<100
     

    输出

    小k建立粮食基地的坐标(保留两位小数)

    样例输入 Copy

    1
    3
    167 -100 44
    78 262 21
    -245 -27 1

    样例输出 Copy

    132.44 16.29

    已知每个村庄的位置 xi,yi,以及需要运送的粮食重量 vi,设基地的位置在 x,y,那么小 k 运送粮食到任意一个村庄消耗的费用为(x-xi)*(x-xi)*vi+(y-yi)*(y-yi)*vi,由此可只 x 坐 标和 y 坐标可以分开来算,将所有消耗相加起来得到一个关于 x 的方程,a*x*x-b*x+c, 可转化为由此可得出当 x = b/(2*a)时消耗最小,同理可得出 y 坐标的值。

     1 #include<stdio.h>
     2 #include<algorithm>
     3 using namespace std; 
     4 const int maxn = 1010;
     5 int main(){
     6     int t;
     7     double a[maxn],b[maxn],c[maxn];
     8     scanf("%d",&t);
     9     while(t--)
    10     {
    11         int n;
    12         scanf("%d",&n);
    13         double z=0,x=0,v=0;
    14         for(int i = 1;i <=n;i++)
    15         {
    16             scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
    17             z += a[i]*c[i];
    18             x += b[i]*c[i];
    19              v += c[i];
    20         }
    21     sort(a+1,a+n+1);
    22     sort(b+1,b+n+1);
    23 //    double l_1 = a[n],r_1 = a[1];
    24 //    double l_2 = b[n],r_2 = b[1];
    25 //    double sum = 0;
    26 //    for(int i = 0;i < n;i++)
    27 //    {
    28 //        sum  =  sqrt((a[1]-a[i])*(a[1]-a[i])+(b[1]-b[i])*(b[1]-b[i]));
    29 //    }
    30 //    for(int i = 0;i<100;i++)
    31 //    {
    32 //        mid_1 = (l_1+r_1) / 2;
    33 //        mid_2 = (l_2+r_2) / 2;
    34 //        for(int i = 0;i<n;i++)
    35 //        double mid = sqrt((mid_1-a[i])*(mid_1-a[i])+(mid_2-b[i])*(mid_2-b[i]))
    36 //        if(mid < sum)
    37 //        {
    38 //            sum = mid;
    39 //            
    40 //        }
    41 //    }
    42 
    43     printf("%.2f %.2f
    ",z/v,x/v);
    44         }    
    45 }
    View Code
     
  • 相关阅读:
    微软面试智力题
    苹果下好用的中文输入法
    Programming on Mac OS X Learn ObjectC Serials (1)
    Mac OS X Glut build instructions
    window.opener 的用法
    jboss5.1.0.GA :org.apache.tomcat.jni.Error
    分账模式助力电子商务
    SON JAVA 使用方法
    网站功能用语
    如何在spring框架中解决多数据源的问题
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10202509.html
Copyright © 2011-2022 走看看