Topcoder EllysBottles 题解

来源:互联网 发布:画画软件手机版 编辑:程序博客网 时间:2024/05/16 09:14

题意

给你一些数,每次取一个最大的和一个最小的出来,将它们两个都变成它们的平均数,放回,进行k次,问最后最小的数是多少

思路

到一定地步的时候最大和最小的就基本相等了,所以判断相等后终止循环

代码

#include <vector>#include <algorithm>using namespace std;class EllysBottles{    public:    double getVolume(vector<int>,int);};double EllysBottles::getVolume(vector<int> bottles,int k){    vector<double> ans;    double t;    for(int i=0;i<bottles.size();i++)        ans.push_back(bottles[i]);    for(int i=0;i<k;i++)    {        sort(ans.begin(),ans.end());        if(ans[0]==ans[ans.size()-1])            return ans[0];        t=(ans[0]+ans[ans.size()-1])/2;        ans[0]=t;        ans[ans.size()-1]=t;    }    sort(ans.begin(),ans.end());    return ans[0];}
原创粉丝点击