首页 > 其他分享 >C. Mixing Water

C. Mixing Water

时间:2024-05-01 10:55:20浏览次数:16  
标签:顺序 题意 Water 那么 Mixing 操作 最优 cout

https://codeforces.com/contest/1359/problem/C

题意:给h和c两个数,并且操作顺序必须是hchchchch...对这些操作求和后除以操作次数得到均值,要求这个均值尽可能的接近t。问在最接近t的情况下,最少需要进行多少次操作。

思路:如果(h + c) / 2 >= t,那么则只需两次操作最优。 如果h == t,那么一次操作最优。对于其他的情况,可以假设hc这样的操作有k次,可以得到公式k = (t - h) / (h + c - 2 * t).k是一个浮点数,那么再讨论一下k向上或者向下取整的情况,取一个最优的即可。

总结:一开始误解了题意,以为题目要求任意顺序,只要最后的值最接近t就行。后来发现有顺序要求,那么就分三种情况讨论。对于第三种情况,没有考虑到设一个k,然后求k即可。
如果不要求操作顺序的话,那么设一个未知数k是无效的,需要两个未知数x和y来表示,那么不能O(1)求x和y,可能需要枚举x和y的数量,根据一个x,可以求出固定的y?

void solve(){
    double h, c, t;
    cin >> h >> c >> t;

    if (t == h){
        cout << 1 << "\n";
    }
    else if ((h + c) >= t * 2){
        cout << 2 << "\n";
    }
    else{
        double k = (t - h) / (h + c - 2 * t);
        double error1 = abs((ceil(k) * (h + c) + h) / (ceil(k) * 2 + 1) - t);
        double error2 = abs((floor(k) * (h + c) + h) / (floor(k) * 2 + 1) - t);
        cout << (error2 <= error1 ? (2 * floor(k) + 1) : (2 * ceil(k) + 1)) << "\n";
    }
}

标签:顺序,题意,Water,那么,Mixing,操作,最优,cout
From: https://www.cnblogs.com/yxcblogs/p/18169090

相关文章

  • 浅析OpenCV分水岭变换watershed函数的markers参数[C++]
    0.前言本文是笔者在学习C++OpenCV库时学习心得,在学习分水岭变换函数时,由于缺少相关学习资料,导致笔者理解吃力,故写此文章阐述一下对该函数的理解,希望对其他学习人士提供帮助。本文主要介绍了watershed函数参数以及参数实际表示。请您按文章次序阅读。您需要提前了解的相关知......
  • blender python api 将指定的顶点组(water)转换为颜色属性water_colors
    1.选中物体,进入权重绘制模式2.代码:importbpy#获取当前活动的物体obj=bpy.context.object#确保物体是网格类型ifobj.type!='MESH':print("当前激活的对象不是网格类型。")#exit()#使用exit()来提前退出脚本#获取名为“water”的顶点组vertex_gro......
  • CF107A Dorm Water Supply 题解
    题目简述给出一个$n$个点,$m$条边的有向图,边带权。保证每个点的出度和入度最多为$1$。对于每一个入度为$0$,出度为$1$的点,我们在该点建一个水箱。对于每一个入度为$1$,出度为$0$的点,我们在该点建一个水龙头。可以发现,每一个水箱对应一个唯一的水龙头,我们将每对对应......
  • Yolov8-pose关键点检测:特征融合 | CAMixing:卷积-注意融合模块和多尺度提取能力 | 202
     ......
  • YC262B [ 20240321 CQYC省选模拟赛 T2 ] 倒水(water)
    题意一面墙上有\(n\)个平台,每个平台是一条连接\((h_i,l_i)\)与\((h_i,r_i)\)的线段。其中\(l_i,r_i\)组成一个\([1,2n]\)的排列。你需要按照某种顺序淹没这些平台,每淹没一个平台,水会顺着线段的两个端点垂直下落。假设每次淹没的水是无限的,若当前的平台没有水,则......
  • 在Flink 1.11中,assignTimestampsAndWatermarks方法已经被新的方法assignTimestamps和a
    在Flink1.11中,assignTimestampsAndWatermarks方法已经被新的方法assignTimestamps和assignWatermarks所替代。这是为了更好地将时间戳和水位线的定义分离开来以下是使用新API的示例代码:importorg.apache.flink.api.common.eventtime.WatermarkStrategy;importorg.apache.fli......
  • flink 中的水位线(Watermark)
    水位线Watermark实时统计使用了flinksql程序,使用flink-TVF表值函数滚动窗口按分钟进行数据聚合操作,消费的kafka数据需要在规定的时间窗口内进行推送数据并消费计算,为了解决处理乱序事件或延迟数据引入了Watermark,用来设置延迟计算时间等待迟到的数据,但不能无限期的等下去,必......
  • P1550 [USACO08OCT] Watering Hole G
    原题链接题解最小生成树的应用。这道题多转了一个弯,这道题其实多了一个结点(代表一个虚拟水井),每块田打井的费用可以过渡到从虚拟水井运水的费用,然后再套用最小生成树的模板即可。code #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;structNode{......
  • P1550 [USACO08OCT] Watering Hole G
    原题链接题解思维转换,想象井里的水都来自山上,并把山看成一个点,那么这道题就变成了最小生成树简证最小生成树原理:按边权排序,然后遍历,如果这条边的两个点之前每连过,那么就连上,因为这就是这两个点所在集合之间的最短路径了,不然这条边没必要加,因为已经联通了算是一种贪心?code#i......
  • 洛谷题单指南-贪心-P1208 [USACO1.3] 混合牛奶 Mixing Milk
    原题链接:https://www.luogu.com.cn/problem/P1208题意解读:就是一个部分背包问题,贪心模版题。解题思路:优先选择单价低的牛奶即可。100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=5005;structfarmer{intprice,count;}f[N];boolcmp(fa......