Poj百练 3468:电池的寿命 (分类:贪心)

对于贪心问题,不要太关注过程或者方法,而应该关注结果的数据。

一般来讲,贪心问题至少要讨论两种情况。

 

这道题点关注点就不在什么时候换电池,如何换电池,而在于电池到低能用多久。

讨论可分为两种情况:

1.最大的电池寿命大于其他电池寿命之和

 时间=其他电池寿命之和

2.最大的电池寿命小于等于其他电池寿命之和

时间=总和/2

 

想明白就很简单啦!

//电池的寿命 OpenJ_Bailian - 3468
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<stdlib.h>
#include <cstring>
using namespace std;

const int maxn = 1010;
int n, t[maxn];

int main()
{
    while(scanf("%d",&n) != EOF){
        memset(t, 0, sizeof(t));
        double sum = 0;
        for(int i = 1; i <= n; i++){
            scanf("%d",&t[i]);
            sum += t[i];    //节省时间
        }
        //分为两种情况讨论
        sort(t+1,t+n+1);
        sum -= t[n];
        if(t[n] > sum)  //当最大的电池寿命大于其他寿命之和
            printf("%.1lf\n",sum);
        else            //当最大的电池寿命小于等于其他寿命之和
            printf("%.1lf\n",(double)(sum+t[n])/2);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/a1097304791/article/details/81416760