rqnoj 495 化学课配制溶液
来源:互联网 发布:淘宝如何设置价格区间 编辑:程序博客网 时间:2024/06/11 01:33
原题: https://www.rqnoj.cn/problem/495
//rqoj495 //给出不同溶液的浓度Ai和体积Bi,问 最多能配出多大体积的浓度W的溶液。Ai,Bi,Wi由题目给出,均为整数 //思路:先把所有的溶液浓度由高到低排序,然后把所有的溶液都混合在一起,得到总浓度为C,总体积V三种情况: // ①如果浓度C刚好等于w,即可输出体积// ②如果C>W,说明浓度太高,为了使体积减少量最少,我们选择 先去掉浓度最高Ci的溶液ri(设体积为Vi),假设去掉的体积为Vx// 列出公式有: C*V - Ci * Vx = Wi*(V-Vx),好好体会这条公式,这是关键。// 如果求出Vx>Vi,说明去除了所有的Ci溶液还是达不到浓度Wi,我们先去除全部Ci溶液后,再查找下一个// 如果求出Vx<=Vi,说明去除Vx就可以恰好达到浓度Wi,这时我们用V-Vx,跳出循环。 // ③如果C<W,过程则与②相反,先去除浓度最低的溶液..//注意精度问题,如果浮点数比较大小的表达方式.#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct R {double vi;//体积 double ci;//浓度 }r[51];//溶液 int cmp(R a,R b)//浓度从大到小 {return a.ci>b.ci;}int main(){int n;while(~scanf("%d",&n)){double sum=0;double v=0;for(int i=0;i<n;i++){scanf("%lf",&r[i].ci);}for(int i=0;i<n;i++){scanf("%lf",&r[i].vi);sum=sum+r[i].ci*r[i].vi;//总溶质 v=v+r[i].vi;//总体积 }sort(r,r+n,cmp);double target;//所需要的目标弄度 scanf("%lf",&target);double now=sum/v;//全部混合在一起的浓度if(now==target){printf("%.5lf\n",v);continue;}else if(now<target){//浓度太低 int i;for(i=n-1;i>=0;i--)//从低浓度额开始减 { double tmp=v*(now-target)/(r[i].ci-target);if(tmp-r[i].vi>0.000001) //浮点数判断大于 {double m=r[i].vi*r[i].ci;sum=sum-m;v=v-r[i].vi;now=sum/v;}else{v=v-tmp;break;}}printf("%.5lf\n",v);}else{int i;for(i=0;i<n;i++)//从高浓度额开始减 {double tmp=v*(now-target)/(r[i].ci-target);if(tmp-r[i].vi>0.000001){double m=r[i].vi*r[i].ci;sum=sum-m;v=v-r[i].vi;now=sum/v;}else{v=v-tmp;break;}}printf("%.5lf\n",v);}}return 0;}
一开始我的想法是把所有的溶液先混合起来,如果溶度高就去减掉浓度高的溶液,那浓度高的溶液要减掉多少呢,我就去二分找最佳体积了....结果被我搞得好复杂,也过了60的数据.最后没解出来。。。看了评论区之后才明白了正确的思路,以后浓度这些我还是应该冷静下来去推 公式,不要慌。
阅读全文
0 0
- rqnoj 495 化学课配制溶液
- 溶液模拟器
- 溶液浓度问题
- 贪心水题搭配溶液
- 正确认识车用尿素溶液
- rqnoj-332 & rqnoj-53
- 使用车用尿素溶液的注意事项
- 配制数据库
- PostgreSQL配制
- 配制FCKeditor
- Vss2005 配制
- Vss2005 配制
- 配制iBATIS
- lighttpd 配制
- 环境变量配制
- fedora16配制
- 配制文件
- svn配制
- Empty test suite.(PyCharm程序运行错误)
- Navicat工具介绍
- onResume无限循环
- python3 爬虫技术入门
- webpack学习系列-lazy-loading (https://webpack.js.org/guides/lazy-loading/)
- rqnoj 495 化学课配制溶液
- 推荐一款网络可视化的工具gephi
- 兼容Android7.0自动安装 FileProvider 解决下载完成后无法自动安装
- python面向对象
- Redis能干啥?细看11种Web应用场景
- $.ajax跨域实例
- ZendStudio
- leetcode--Scramble String
- 微信登录接口