zoukankan      html  css  js  c++  java
  • poj1862

    一、题意:两个物体m1、m2相撞后会变成一个物体,这个物体的重量会变成2*sqrt(m1*m2)。有n个物体,假设只会发生两两相撞,求最后剩下的最小重量。

    二、思路:简单的贪心。越大的数开越多的次方,最后得到的一定是最小的重量。因此按重量从小到大排,假设三个物体,则最小重量=2*sqrt(m0*2*sqrt(m1*m2))。n个物体以此类推

    三、代码:

     1 #include"iostream"
     2 #include"stdio.h"
     3 #include"algorithm"
     4 #include"cmath"
     5 using namespace std;
     6 int n;
     7 double num[1000];
     8 int main()
     9 {
    10     while(scanf("%d",&n)==1)
    11     {
    12         for(int i=0;i<n;i++)
    13             cin>>num[i];
    14         sort(num,num+n);
    15 
    16         double ans=0;
    17         if(n==1)
    18             ans=num[0];
    19         else{
    20             ans=2*sqrt(num[n-1]*num[n-2]);
    21             for(int i=n-3;i>=0;i--)
    22             {
    23                 ans=2*sqrt(num[i]*ans);
    24             }
    25         }
    26         printf("%.3llf
    ",ans);
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    服务器切换
    闭包函数
    函数对象+嵌套
    lvs讲解
    了解python
    rang enumerate
    set-集合功能介绍
    元组-tuple功能介绍
    dict-字典功能介绍
    list-列表功能介绍
  • 原文地址:https://www.cnblogs.com/acm-jing/p/10023054.html
Copyright © 2011-2022 走看看