Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water (思维,数学)
题目链接
题意:
给你一杯热水和一杯冷水,问你最少用几杯水,使得混合后的温度与给定的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 (思维,数学)相关推荐
- 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 ...
- 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个数组成一个 ...
- 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 ...
- Educational Codeforces Round 88 (Rated for Div. 2)(AB)
Berland Poker CodeForces - 1359A 代码如下: #include<bits/stdc++.h> #define ll long long using name ...
- Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组
传送门 文章目录 题意: 思路: 题意: 给你nnn个人,一开始位置分别为1,2,...,n1,2,...,n1,2,...,n,让后mmm个操作,每次都将某个人移动到最前面,其他人依次顺延,求每个人 ...
- 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=⌈aya ...
- Educational Codeforces Round 113 (Rated for Div. 2) D. Inconvenient Pairs 思维
题目大意 给你n条竖直线 m条水平线 k个点 这些点一定在刚才给出的线上 问你有多少个点对 满足之间的距离大于 曼哈顿距离 题目思路 当点在竖直线和水平线的交汇处时 这个点与其他任何点的距离一定等于曼 ...
- 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这个时候两 ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
最新文章
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- 记一次ssh登录异常
- 神策数据潘书荟:解读千人千面,洞悉数据智能的价值
- php 安装xdebug扩展
- linux程序只监听了ipv6端口,c-在Linux上侦听IPv6多播
- hp android 平板,惠普三款Android平板电脑新产品曝光
- Android - Android Studio 自动(auto)添加import 语句
- 2021-05-07PLC的伺服电机与控制器
- 搭建离线版keras中文文档
- 互联网晚报 | 1月7日 星期五 | 微信小程序日活突破4.5亿;阿里调整大淘宝组织架构;丰田成2021年美国最畅销汽车品牌...
- 率先驶入广州,百度Apollo“整车无人”车队街头开跑
- 格局炸裂,程序员必看的十部纪录片
- 一个非常不错的JQ 插件库
- VMX(1) -- 简介
- 金钱和私有制哪个才是万恶之源?
- 创新型中小企业认定条件
- python猫狗大战游戏下载_猫狗大战RPG游戏下载-猫狗大战RPG官方版下载v1.1.8-PChome下载中心...
- 安装虚拟机之开启VT
- c语言结构体错误,C语言结构体用法很多,但是坑也很多
- arduino图形化编程——ardublock
热门文章
- app inventor调用图像识别_项目实战-图像识别项目-通过QT制作图形界面并调用百度AI进行图像识别(一)...
- rpm软件安装冲突:conflicts with
- org.springframework.web.client.HttpServerErrorException
- 2013年中南大学复试-惠民工程
- 如何更改虚拟光驱与物理光驱的盘符
- 比肩某应的顶级AI电销机器人无限部署
- VBA SmartArt生成组织结构图
- 思科vPC (Virtual Por Channel)
- webpack学习总结
- java之环境变量设置