链接 C. Mixing Water

题意 :
给一个容器,往里面不断地倒 热水 冷水 交替进行,问最少倒多少杯水后容器内的平均温度最接近于 T.
思路

  1. 首先很容易观察到,如果倒进去的水是偶数杯,那温度一定是 (h+c)/ 2 。而奇数杯的话 ,越多肯定是越接近于(h+c)/2,并且是递减的。
  2. 然后考虑一下特殊情况,如果 h=t ,那答案一定是 1,如果 (h+c)/2 >=t ,那答案一定是 2,因为达到平均温度的时候 差值是最小的,最后的温度不可能低于平均温度。
  3. 最后普遍的情况就是 找最接近于温度 t 的左右两个状态,一个大于 t 一个小于 t ,二分奇数杯就好了。
  4. 一开始以为会卡精度,用了分数 ,然后发现小数也可以过

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e3+7;
using namespace std;
int k,h,c,t;
char s[maxn][maxn];
double f(ll mid){return (mid*(h+c)+h)*1.0/(mid*2+1)*1.0;
}
int main(){cin>>k;while(k--){scanf("%d%d%d",&h,&c,&t);if(t>=h){printf ("1\n");continue;}if(h+c>=2*t){printf ("2\n");continue;}ll l=0,r=1e9,mid,ans=0;while(l<=r){mid=(l+r)/2;if(f(mid)>=t*1.0) ans=mid,l=mid+1;else r=mid-1;}if(fabs(f(ans)-t*1.0)>fabs(f(ans+1)-t*1.0)) printf ("%d\n",2*ans+3);else printf ("%d\n",2*ans+1);}
}

Codeforces 1359 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. CodeForces - 1359

    CodeForces - 1359 A - Berland Poker 将尽可能多的joker牌先给一个人,剩下的k-1个人平均分,使得差值最大int t,n,m,k; int main() {sca ...

  3. 1359C. Mixing Water

    C. Mixing Water 一个简单的思维. 因为是一隔一的,所以要么热水多放一个,要么冷水和热水一样多. 设热水与要求的差为cou1,冷水与要求的差为cou2. 所以我们先考虑两种情况: 1,c ...

  4. Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water (思维,数学)

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

  5. Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学

    E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...

  6. CodeForces - 1359C Mixing Water(三分)

    题目链接:点击查看 题目大意:一杯热水的温度为 h ,一杯凉水的温度为 c ,现在有一个空桶,要求轮流执行以下操作: 倒一杯热水 倒一杯凉水 倒一杯热水 ..... 每次总是以一杯热水开始,问需要倒多 ...

  7. K-th Beautiful String CodeForces - 1328B(二分+数学)

    For the given integer n (n>2) let's write down all the strings of length n which contain n−2 lett ...

  8. codeforces1359C Mixing Water

    https://codeforces.com/problemset/problem/1359/C B题wa了2发,前期劣势巨大..然后过完c题一看board竟然只有400人过了c,运气比较好没卡住. ...

  9. 【TYVJ】1359 - 收入计划(二分)

    http://tyvj.cn/Problem_Show.aspx?id=1359 一开始是一眼看出是二分的,因为这里有单调性,因为取钱是一次取完并且是连续的. 所以最优取法就是准备达到某个价值再取.最 ...

最新文章

  1. SpringMVC拦截器简单使用
  2. SSH客户端开发开源组件Ganymed SSH-2 for Java初体验
  3. Java学完后从业薪资怎么样?前景如何?
  4. 和ajax区别_AJAX、Fetch和Axios的细微区别
  5. matlab如何用代码导入文件_20+行Matlab代码实现文件扫描
  6. DBUtils使用详细示例(转载)
  7. WEB网页专业词汇 汇总
  8. JS对数据进行判空操作
  9. 惠普p1106打印机安装步骤_hp打印机P1106安装不了驱动,总是失败,如下图
  10. C#窗体-个人简历生成(自己设计并编写一个 Windows 应用程序,要求用到TextBox、GroupBox、RadioButton )
  11. javascript自动分号补齐带来的坑
  12. ANSYS or Abaqus? 一个过来人的工作感悟
  13. 软件测试工程师的职业规划
  14. 如何打开.exe文件
  15. NX二次开发-UFUN创建圆柱UF_MODL_create_cyl1
  16. SwiftUI学习笔记之@State, @Binding
  17. write-back与Write-through
  18. Android开发必备(干货源码放送大)
  19. opencv学习-碰壁小球
  20. STM32G070CBTx使用LL库原生I2C读取FM24C04D

热门文章

  1. Android自定义Drawable第十四式之百步穿杨
  2. linux ssh motd 颜色,ubuntu ssh登录的时候motd被打印了两次
  3. python遍历文本文件统计字符个数_用python获取txt文件中关键字的数量
  4. Python Django 基本创建 App创建
  5. 怎么看cudnn的版本好_婴儿生长曲线怎么看、是不是越胖越好
  6. 特征工程——特征选择
  7. 2、SpringBoot接口Http协议开发实战8节课(7-8)
  8. linux网络音频播放,通过 PulseAudio 实现局域网音乐播放
  9. 浏览器主页被劫持篡改了怎么办
  10. reset.css(常用项目代码初始化)