Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water(数学/二分)
题目链接:https://codeforces.com/contest/1359/problem/C
题意
热水温度为 $h$,冷水温度为 $c\ (c < h)$,依次轮流取等杯的热冷水,问二者在一容器中混合至最接近温度 $t$ 最少需要取多少杯。
题解
设取了 $x$ 杯热水,那么总的温度有两种情况:
- 取的冷水杯数与热水相同:$\frac{xh + xc}{2x}$
- 取的冷水杯数比热水少一杯:$\frac{xh + (x - 1)c}{2x - 1}$
第一种情况:
$\frac{xh + xc}{2x} = \frac{h + c}{2}$,所以只要取的热冷水杯数相同,总温度恒为 $\frac{h + c}{2}$ 。
第二种情况:
$\frac{xh + (x - 1)c}{2x - 1} = \frac{x(h+c)-c}{2x-1}$,求导得:$\frac{c-h}{(2x-1)^2}$,即当 $x≥1$ 时原函数单调递减,$\frac{x(h+c)-c}{2x-1} = \frac{h+c}{2 - \frac{1}{x}} - \frac{c}{2x-1}$,将 $x = 1$ 和 $x = + \infty$ 代入得值域为:$[\frac{h + c}{2}, h]$ 。
综上:
- 如果 $t≥h$,因为值域为 $[\frac{h + c}{2}, h]$,此时与 $t$ 相差最小的就是 $h$,所以输出 $1$ 即可。
- 同理,如果 $t≤\frac{h + c}{2}$,输出 $2$ 即可。
- 否则二分查找总温度小于等于 $t$ 的最小杯数 $ans$,与大于 $t$ 的最小杯数 $ans-1$ 取与 $t$ 之差的较小者即可。
代码
- #include <bits/stdc++.h>
- using namespace std;
- int h, c, t;
- double cal(double x) {
- return (x * h + (x - 1) * c) / (2 * x - 1);
- }
- void solve() {
- cin >> h >> c >> t;
- if (t >= h)
- cout << 1 << "\n";
- else if (2 * t <= h + c)
- cout << 2 << "\n";
- else {
- int ans = 0;
- int l = 1, r = 1e6;
- while (l <= r) {
- int mid = (l + r) / 2;
- if (cal(mid) <= t) {
- ans = mid;
- r = mid - 1;
- } else l = mid + 1;
- }
- double mi = min(abs(t - cal(ans - 1)), abs(t - cal(ans)));
- if (ans - 1 >= 1 and mi == abs(t - cal(ans - 1)))
- cout << 2 * ans - 3 << "\n";
- else
- cout << 2 * ans - 1 << "\n";
- }
- }
- int main() {
- int T; cin >> T;
- while (T--) solve();
- }
Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water(数学/二分)的更多相关文章
- Educational Codeforces Round 88 (Rated for Div. 2) B. New Theatre Square(贪心)
题目链接:https://codeforces.com/contest/1359/problem/B 题意 有一块 $n \times m$ 的地板和两种瓷砖: $1 \times 1$,每块花费为 ...
- Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)
题目链接:https://codeforces.com/contest/1359/problem/D 题意 有一个大小为 $n$ 的数组,可以选取一段连续区间去掉其中的最大值求和,问求和的最大值为多少 ...
- Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker(数学)
题目链接:https://codeforces.com/contest/1359/problem/A 题意 $n$ 张牌可以刚好被平分给 $k$ 个人,其中有 $m$ 张 joker,当一个人手中的 ...
- Educational Codeforces Round 88 (Rated for Div. 2) E. Modular Stability(数论)
题目链接:https://codeforces.com/contest/1359/problem/E 题意 有一大小为 $k$ 的数组,每个元素的值在 $[1,n]$ 间,若元素间两两不等,问有多少数 ...
- Educational Codeforces Round 88 (Rated for Div. 2) E、Modular Stability 逆元+思维
题目链接:E.Modular Stability 题意: 给你一个n数,一个k,在1,2,3...n里挑选k个数,使得对于任意非负整数x,对于这k个数的任何排列顺序,然后用x对这个排列一次取模,如果最 ...
- Educational Codeforces Round 88 (Rated for Div. 2) D、Yet Another Yet Another Task
题意: 给你一个含n个数a1,a2...an的数组,你要找到一个区间[l,r],使得al+a(l+1)+...+a(r-1)+ar减去max(al,a(l+1),...,a(r-1),ar)的值尽可能 ...
- Educational Codeforces Round 88 (Rated for Div. 2) B、New Theatre Square C、Mixing Water
题目链接:B.New Theatre Square 题意: 你要把所有"." 都变成"*",你可以有两个选择,第一种就是一次铺一个方块(1*1),第二种就是同一 ...
- Educational Codeforces Round 58 (Rated for Div. 2) D 树形dp + 数学
https://codeforces.com/contest/1101/problem/D 题意 一颗n个点的树,找出一条gcd>1的最长链,输出长度 题解 容易想到从自底向长转移 因为只需要g ...
- Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle(数学/双指针)
题目链接:https://codeforces.com/contest/1366/problem/B 题意 大小为 $n$ 的数组 $a$,除了 $a_x = 1$,其余 $a_i = 0$,依次给出 ...
随机推荐
- LeetCode解题Golang(1-10)
前言 LeetCode题目个人答案(Golang版) 本篇预期记录 1-10 题, 持续更新 正文 1.两数之和(简单) https://leetcode-cn.com/problems/two-su ...
- 010_MySQL
目录 初识MySQL 为什么学习数据库 什么是数据库 数据库分类 MySQL简介 Windows安装MySQL 安装建议 软件下载 安装步骤 安装SQLyog 下载安装 连接数据库 简单操作 命令行连 ...
- Typora笔记上传到播客时图片不显示问题解决(已解决)
前言: 相信我们都遇到过,使用Typora做笔记是一件非常令人舒服的事,然而,它却有一个非常难受的地方,那就是我们在做完笔记想要将其上传到自己的博客时,复制粘贴的图片无法显示.因为Typora复制 ...
- 【JDBC核心】批量插入
批量插入 批量执行 SQL 语句 当需要成批插入或者更新记录时,可以采用 Java 的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率. JDBC 的批量 ...
- 计算机考研复试真题 abc
题目描述 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的所有a.b.c的值. 输入描述: 题目没有任何输入. 输出描述: 请输出所有满足题目条 ...
- 【Sphinx】 为Python自动生成文档
sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...
- (二)数据源处理3-python处理包含合并单元格的excel
分析:
- kubernets之pod简介
一 k8s集群里面的最小单位是pod 1.1 一个较为简单的pod的配置文件 apiverson: api的版本号 kind: 资源的种类 metadata: pod的种类等相关信息 spec: p ...
- CTFshow-萌新赛杂项_劝退警告
下载附件 https://www.lanzous.com/i9wocah 下载后得到一个劝退警告.zip 解压得到一张gif图片 使用binwalk分析发现包含zip 于是拿到了一个压缩包 打开后发现 ...
- springAOP的概述及使用
Spring AOP SpringAOP是Spring中非常重要的功能模块之一,该模块提供了面向切面编程,在事务处理,日志记录,安全控制等操作中广泛使用. SpringAOP的基本概念 AOP的概念 ...