这道题呢其实是很简单的,你先从全部水开始试,热了就减1个单位的热水,并比较这个方案是不是比原方案好,若要好些则认为这种情况暂时最好,冷了就减一个单位的冷水,知道有有一个小于0为止。
#include<iostream>
using namespace std;
int main(){
long long t1,t2,x1,x2,t0,ans,ans1;
long double anss=11111111;
cin>>t1>>t2>>x1>>x2>>t0;
while(x1>=0&&x2>=0){
double t=double(t1*x1+t2*x2)/(x1+x2);//当前温度
if(t<t0)--x1;//冷了就减一个单位的冷水
else {
if(anss>t-t0){//若比原方案好,则采用它
ans=x1;ans1=x2;
anss=t-t0;
}
--x2;//热了就减一个单位的热水
}
}
cout<<ans<<" "<<ans1;
}