电池的寿命(不清楚是什么类型/虽然有标明是贪心)
这道题做起来心累呀!
题目意思是给你一串值,每个值代表电池的存电量,你可以交替使用,若要使机器工作,必须要有两个电池同时工作,问你最多工作多长时间。
这题的思路是:
当除最大电池外的其余所有电池的可用时长都小于最大电池时,其他电池相当于轮流陪着最大电池耗尽。
如果不是这种情况,那么所有电池就可以混在一起,来回切换,也就是最后的时长是所有时长的 和除以2
有了这个思路那就可以直接看代码了
// 电池的寿命
# include<iostream>
# include<vector>
# include<iomanip>
using namespace std;int main()
{int N;cin>>N;vector<int> arr(N);int max = 0;int sum = 0;for(int i=0;i<N;i++){cin>>arr[i];if(max<arr[i]){max = arr[i];}sum+=arr[i];}double result;if(max>sum-max)result = sum-max;else{result = 1.0*sum/2;}cout<<fixed<<setprecision(1)<<result<<endl;return 0;
}
最让人头大的是刚才的思路想不出来啊,不知道是不是越来越笨了。另外一个是他要求只能是整数或以.5结尾(最后说给的例子还不一致,😂)
这里还需要知道的是怎么在C++里面规定输出一位
用到头函数# include<iomanip>
然后是cout<<fixed<<setprecision(1)<<result<<endl;
前面的cout<<fixed<<setprecision(1)是固定要写的,特别是fixed这个词及其顺序,1代表小数点后几位,会用的话比C方便很多