C. Mixing Water
一个简单的思维。
因为是一隔一的,所以要么热水多放一个,要么冷水和热水一样多。
设热水与要求的差为cou1,冷水与要求的差为cou2。
所以我们先考虑两种情况:
1,cou1大于cou2,那么肯定是要么只放两个,或者一个热水正好。
2,cou2大于cou1,那么每次加两个就是减小热水和要求的差值,那么减到多少合适呢?
这时就要判断一下了,这里也是容易错的地方。
因为判断是平均值的差,所以记得转换成double型求平均值。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
signed main()
{
int tt;
cin >> tt;
while (tt--)
{
int h, c, t;
cin >> h >> c >> t;
int res = 1e7;
int cnt = 0;
int cou1 = h-t;
int cou2 = t-c;
if (cou1>=cou2){
cnt = 2;
if (cou1==0) cnt = 1;
}
else
{
int cha = cou2-cou1;
int num1,num2;
if (cou1>=cha)
{
num1 = cou1%cha;
num2 = abs(cha-num1);
if ((double)num1/(cou1/cha*2+1)<=(double)num2/((cou1/cha+1)*2+1)) cnt = cou1/cha*2+1;
else cnt = (cou1/cha+1)*2+1;
}
else
{
if ((double)(cou1)<=(double)(cha-cou1)/3.0) cnt = 1;
else cnt = 3;
}
}
cout<<cnt<<endl;
}
}
|