https://blog.csdn.net/birdreamer/article/details/79749068
上面是原题超链;
原博D题的做法有点太浪费空间
#include <iostream>
using namespace std;
int main(){
int R[109],J[109],n,x,y,z,r,j;
for(int i=0;i<109;i++){R[i]=0;J[i]=0;};
cin>>n>>x>>y>>z;
for(int i=0;i<n;i++){
cin>>r>>j;
R[r]++;J[j]++;
}
int sum=n*x,max=-1,tem;
for(int i=1;i<109;i++){
sum+=R[i]*(y-x);
sum+=J[i-1]*(z-y);
if(sum>max){max=sum;tem=i;}
}
cout<<max<<" "<<tem;
}
思路就是
- 记录不同温度的Ri Ji出现次数
- 遍历温度,遍历前所有零件value都为x
- 进入最佳温度区间时,sum(value之和)要加(y-x)*R[i]
- 离开最佳温度时,sum减(z-y)*J[i-1] (因为最佳温度区间是闭区间)
适宜温度区间是闭区间,然后要注意数据边界的处理