题目链接
题意:
给你一杯热水和一杯冷水,问你最少用几杯水,使得混合后的温度与给定的t温度最相近。
(这里至少要用一杯水,并且,交替使用,比如:第一杯只能用热水,第二杯只能用冷水,第三杯只能用热水依次下去。。。)

思路:

这里由于交替使用热水冷水,那么我们可以得出,要么,热水和冷水用的杯数一样多,要么热水比冷水多一杯
那么有俩种情况

1.如果冷水热水一样多,那么比例为 1:1 那么我们1杯热水1杯冷水和5杯热水5杯冷水也是1:1,同样的情况下,我们当然杯数越少越好。我们先判断杯数一样的,如果现在1:1的比例投入后,温度大于给定的温度,那么现在就是最小。因为热水总大于等于冷水的杯数,那么后面温度只会越来越高,相差越来越大,所以,第一种情况出来了。

2 如果热水总比冷水多一杯,那么我们可以列个方程
假设一共用a杯水,b杯热水,那么一定用了b-1杯冷水,热水温度为h,冷水温度为c,给定温度为t。

方程 h*(b/a) + c*((b-1) /a) == t
(由于是接近,所以不一定等于t,但是可以约等,那么现在的a解出来就可能是小数)

又由于b+(b-1) == a (热水的杯数加上冷水的杯数等于总杯数)那么可推出 b = (a+1)/2带入上述方程 化简得:

a = (c-h)/(h+c-2*t).
c,h,t题中都给出了的,所以这是一个一元一次方程

又由于a可能是小数,可能会有一定的误差,所以我在他的左右枚举了一下,以防万一,应该是可以用其他方法一步确认的,这个坑留给你们啦。。。嘻嘻

AC代码

#include <bits/stdc++.h>
inline int read(){char c = getchar();int x = 0,s = 1;
while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}
while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getchar();}
return x*s;}
using namespace std;
#define NewNode (TreeNode *)malloc(sizeof(TreeNode))
#define Mem(a,b) memset(a,b,sizeof(a))
const int N = 1e6 + 5;
const long long INFINF = 0x7f7f7f7f7f7f7f;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-7;
const unsigned long long mod = 998244353;
const double II = acos(-1);
const double PP = (II*1.0)/(180.00);
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> piil;
double sum(ll i,ll h,ll c,ll t)
{return fabs( t - ( h*1.000*(i/2+1)/(i*1.00) + c*1.000*(i/2)/(i*1.000) ) );//求温度差的绝对值
}
int main()
{std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;cin >> t;while(t--){ll h,c,t;cin >> h >> c >> t;if(h == t) cout << 1 << endl;//如果第一杯就相等了,就直接输出else if((h+c)/2 >= t) cout << 2 << endl;//如果已经大于等于了,现在就是最小else{ll num = (c-h)/(h+c-2*t),ans = 0;//num为推出的公式求的杯数,ans记录最小差值的杯数if(num <= 0) cout << 2 << endl;//如果为负数,那么这是不可能的,所以俩杯即可double Min = INF;for(ll i = num-10;i <= num+10;i++)//左右枚举一下{if(i <= 0 || i % 2 == 0) continue;//如果小于0,或者总杯数为偶数,即热水和冷水一样多的杯数double k = sum(i,h,c,t);//差值if(Min > k) Min = k,ans = i;//更新最小差值}cout << ans << endl;}}
}

Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water (思维,数学)相关推荐

  1. Educational Codeforces Round 88 (Rated for Div. 2)C. Mixing Water(数学+二分法)---题解

    C. Mixing Water 来源:http://codeforces.com/contest/1359/problem/C There are two infinite sources of wa ...

  2. Educational Codeforces Round 88 (Rated for Div. 2) E(数学)

    Educational Codeforces Round 88 (Rated for Div. 2)E 题目大意: 给你n,k(1<=k<=n<=5e5),从1到n中选k个数组成一个 ...

  3. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest 思维 + 差分

    传送门 文章目录 题意: 思路: 题意: 给你三个长度分别为k1,k2,k3k1,k2,k3k1,k2,k3的数组a,b,ca,b,ca,b,c,其中k1+k2+k3=nk1+k2+k3=nk1+k2 ...

  4. Educational Codeforces Round 88 (Rated for Div. 2)(AB)

    Berland Poker CodeForces - 1359A 代码如下: #include<bits/stdc++.h> #define ll long long using name ...

  5. Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组

    传送门 文章目录 题意: 思路: 题意: 给你nnn个人,一开始位置分别为1,2,...,n1,2,...,n1,2,...,n,让后mmm个操作,每次都将某个人移动到最前面,其他人依次顺延,求每个人 ...

  6. Educational Codeforces Round 101 (Rated for Div. 2) D. Ceil Divisions 思维 + 根号数

    传送门 题意: 给一个数组ai=ia_i=iai​=i,每次可以进行操作ax=⌈axay⌉a_x=\left \lceil \frac{a_x}{a_y} \right \rceilax​=⌈ay​a ...

  7. Educational Codeforces Round 113 (Rated for Div. 2) D. Inconvenient Pairs 思维

    题目大意 给你n条竖直线 m条水平线 k个点 这些点一定在刚才给出的线上 问你有多少个点对 满足之间的距离大于 曼哈顿距离 题目思路 当点在竖直线和水平线的交汇处时 这个点与其他任何点的距离一定等于曼 ...

  8. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  9. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

最新文章

  1. 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
  2. 记一次ssh登录异常
  3. 神策数据潘书荟:解读千人千面,洞悉数据智能的价值
  4. php 安装xdebug扩展
  5. linux程序只监听了ipv6端口,c-在Linux上侦听IPv6多播
  6. hp android 平板,惠普三款Android平板电脑新产品曝光
  7. Android - Android Studio 自动(auto)添加import 语句
  8. 2021-05-07PLC的伺服电机与控制器
  9. 搭建离线版keras中文文档
  10. 互联网晚报 | 1月7日 星期五 | 微信小程序日活突破4.5亿;阿里调整大淘宝组织架构;丰田成2021年美国最畅销汽车品牌...
  11. 率先驶入广州,百度Apollo“整车无人”车队街头开跑
  12. 格局炸裂,程序员必看的十部纪录片
  13. 一个非常不错的JQ 插件库
  14. VMX(1) -- 简介
  15. 金钱和私有制哪个才是万恶之源?
  16. 创新型中小企业认定条件
  17. python猫狗大战游戏下载_猫狗大战RPG游戏下载-猫狗大战RPG官方版下载v1.1.8-PChome下载中心...
  18. 安装虚拟机之开启VT
  19. c语言结构体错误,C语言结构体用法很多,但是坑也很多
  20. arduino图形化编程——ardublock

热门文章

  1. app inventor调用图像识别_项目实战-图像识别项目-通过QT制作图形界面并调用百度AI进行图像识别(一)...
  2. rpm软件安装冲突:conflicts with
  3. org.springframework.web.client.HttpServerErrorException
  4. 2013年中南大学复试-惠民工程
  5. 如何更改虚拟光驱与物理光驱的盘符
  6. 比肩某应的顶级AI电销机器人无限部署
  7. VBA SmartArt生成组织结构图
  8. 思科vPC (Virtual Por Channel)
  9. webpack学习总结
  10. java之环境变量设置