luogu1984 [SDOI2008] 烧水问题
题目描述
给出水的比热容、冰点和沸点,问将$n$杯有$\frac{1}{n}\mathrm{kg}$的水从冰点加热到沸点所需最小热量。不一定相邻的两杯水间可以无热量损失地热传递至两者温度相同。
题解
首先,审题!只有两杯水间才可以热传递!不可以三杯水同时热传递!
我们这道题的入手点在于能量守恒定律。我们要让煮沸一杯水的每一个单位热量都尽可能地被用到加热其它没有煮沸的水上,热量能转移,就转移。所以我们要让第一杯水现与第二杯水热传递,再让第一杯水与第三杯水传递,再与第四杯……第二杯加热完后与第三杯、第四杯……传递热量。
由于时间复杂度要求我们在$O(n)$内解决,我们可就必须要找找规律了。
杯子编号 | 初始加热质量来源 | 初始加热质量比例 | 所需加热质量比例$t$ |
1 | 无 | 0 | 1 |
2 | 1→2 | 1/2 | 1/2 |
3 | 1→3+2→3 | 5/8 | 3/8 |
4 | 1→4+2→4+3→4 | 11/16 | 5/16 |
我们有这能找出什么规律呢?因为烧水是热传递,所以我们看看比例。
$\frac{t_2}{t_1}$ | $\frac{1}{2}$ |
$\frac{t_3}{t_2}$ | $\frac{3}{4}$ |
$\frac{t_4}{t_3}$ | $\frac{5}{6}$ |
这样我们就知道了:
$$\frac{t_{n+1}}{t_n}=\frac{2n-1}{2n}$$
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- int main()
- {
- int n;
- scanf("%d", &n);
- double ans = 1, t = 1;
- for (int i = 2; i <= n; i++)
- {
- t = t * (2.0 * (i - 1) - 1) / (2.0 * (i - 1));
- ans += t;
- }
- printf("%.2f\n", ans * 420000 / n);
- return 0;
- }
luogu1984 [SDOI2008] 烧水问题的更多相关文章
- 洛谷P1984 SDOI2008烧水问题
P1984 [SDOI2008]烧水问题 186通过 438提交 题目提供者lych 标签数论(数学相关)模拟各省省选 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 求助! 也是醉了... ...
- 洛谷 P1984 [SDOI2008]烧水问题 解题报告
P1984 [SDOI2008]烧水问题 题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯 ...
- 洛谷 P1984 [SDOI2008]烧水问题
洛谷 P1984 [SDOI2008]烧水问题 题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热. ...
- [SDOI2008]烧水问题
题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...
- 洛谷1984 [SDOI2008]烧水问题
一道找规律 原题链接 显然要将烧得的温度最大化利用,即每次都去热传递. 设水沸腾为\(x\). 第一杯直接烧水,需提高\(x\). 第二杯先与第一杯进行热传递,这样只需提高\(\dfrac{x}{2} ...
- [SDOI2008]烧水问题 规律
题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...
- P1984 [SDOI2008]烧水问题
题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...
- P1984 [SDOI2008]烧水问题(具体证明)
传送门 我见过的第二恶心的题,第一是糖果传递... 以下是一堆具体的证明,自己想的,可能考虑不周,不想看也可以直接看结论 首先有一个很显然的贪心,烧开的水要尽量把热量传递出去 所以有一个比较显然的方法 ...
- 洛谷 1984 [SDOI2008]烧水问题
[题解] 烧开每一杯水之后都用它去把其他没烧开的水焐热,这样显然是最优的.然后推推式子或者列表找规律就好了. #include<cstdio> #include<algorithm& ...
随机推荐
- [ NOIP 2008 ] TG
\(\\\) \(\#A\) \(Word\) 给出一个长为\(N\)的小写字母串,判断出现所有字母中最多出现次数减最少出现次数得到的答案是否是质数. \(N\in [1,100]\) 直接按题意开桶 ...
- JS——dom
节点的获取 <script> var div = document.getElementById("box");//返回指定标签 var div = document. ...
- java攻城狮之路--复习JDBC(利用BeanUtils、JDBC元数据编写通用的查询方法;元数据;Blob;事务;批量处理)
1.利用BeanUtils的前提得要加入以下两个jar包: commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar package com.shel ...
- 阿里云ECS远程桌面连接失败
管理=>本实例安全组=>配置规则=>配置3389端口
- Python 之数据类型
# Numbers(数字) # int(有符号整型) # long(长整型[也可以代表八进制和十六进制]) # float(浮点型) # complex(复数) # String(字符串) # Lis ...
- $.extend 合并对象(处理可传入0个或多个参数)
function test(options){ $.extend({ },this.Default,options); var v = thi ...
- 文章或者观点说说等点赞功能实现(thinkphp)
前端的代码: <!-- 点赞 --> <div class='btm'><a class='zan' id="{$article.id}" href= ...
- 【vue】vue中实现标签页
前言 tab标签页实现很多, 纯css实现, js实现等, 外加一些特殊动画. vue中实现标签页实现 keep-alive标签和is特性 vue-router中嵌套路由 is特性实现(推荐) 优点: ...
- STL源码分析之内存池
前言 上一节只分析了第二级配置器是由多个链表来存放相同内存大小, 当没有空间的时候就向内存池索取就行了, 却没有具体分析内存池是怎么保存空间的, 是不是内存池真的有用不完的内存, 本节我们就具体来分析 ...
- 准备MPI编程环境——Visual Studio
准备 下载并安装Visual Studio 2017 下载并安装MPI (建议使用MSMPI,相对简单方便一点,可以从微软官网下载获得) 配置 新建空白项目 在该项目中新建源文件 右击项目-> ...