码迷,mamicode.com
首页 > 其他好文 > 详细

Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water

时间:2020-05-31 10:47:27      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:include   click   show   isp   函数   code   lap   必须   push   

题意:给一个杯子 可以倒热水h 和冷水c 必须热冷热冷这样倒,可以倒无限次

问至少倒多少次的时候 温度的总和/倒的次数 最接近给的温度t

题目链接:https://codeforces.ml/contest/1359/problem/C

思路:设出函数考虑单调性 再考虑二分

1 假设倒了x杯热水的时候,冷水也倒了x杯

那么f(x)=(c*x+h*x)/(2*x)  则f(x)=(c+h)/2

所以倒了倒了偶数次的时候温度恒为 (c+h)/2

2.假设冷水倒了x-1杯的时候

那么f(x)=(c*(x-1)+h*x)(x*2-1) 运用求导知识 可以得 导函数为 (c-h)/(2*x-1)^2 可知恒小于0

所以单调递减  把1和正无穷带入函数 可知值域为((c+h)/2,h]

那么就可以利用二分 找到第一个小于t的x

然后再比较一下最后一个大于t的数 也就是x-1 两者谁更接近t 

不要忘记此时的答案是x  那么总的次数即为 x+x-1 或者是 x-1 +(x-1)-1

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define pb push_back
 5 const int maxn=2e5+5;
 6 const int mod=1e9+7;
 7 double h,c,t;
 8 double check(double x)
 9 {
10     return (c*(x-1)+h*x)/(2*x-1);
11 }
12 
13 int main()
14 {
15     ios::sync_with_stdio(false);
16     cin.tie(0);
17     int q;
18     cin>>q;
19     while(q--)
20     {
21         cin>>h>>c>>t;
22         if(t<=(c+h)/2)
23         {
24             cout<<2<<\n;
25         }
26         else
27         {
28             int l=1,r=1e9;
29             int ans=1;
30             while(l<=r)
31             {
32                 int mid=(l+r)/2;
33                 if(check(mid)>t)
34                 {
35                     l=mid+1;
36                 }
37                 else
38                 {
39                     ans=mid;
40                     r=mid-1;
41                 }
42             }
43             if(abs(t-check(ans-1))<=abs(t-check(ans)))
44             {
45                 cout<<2*(ans-1)-1<<\n;
46             }
47             else
48                 cout<<2*ans-1<<\n;
49 
50         }
51     }
52 
53 }
View Code

 

Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water

标签:include   click   show   isp   函数   code   lap   必须   push   

原文地址:https://www.cnblogs.com/winfor/p/12996631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!