P1984 [SDOI2008]烧水问题
题目描述
把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃。现需要把每一杯水都烧开。我们可以对任意一杯水进行加热。把一杯水的温度升高t℃所需的能量为(4200*t/n)J,其中,“J”是能量单位“焦耳”。如果一旦某杯水的温度达到100℃,那么这杯水的温度就不能再继续升高,此时我们认为这杯水已经被烧开。显然地,如果直接把水一杯一杯地烧开,所需的总能量为(4200*100)J。
在烧水的过程中,我们随时可以在两杯温度不同的水之间进行热传递操作。热量只能从温度较高的那杯水传递到温度较低的那杯水。由于两杯水的质量相同,所以进行热传递操作之后,原来温度较高的那杯水所降低的温度总是等于原来温度较低的那杯水所升高的温度。
一旦两杯水的温度相同,热传递立刻停止。
为了把问题简化,我们假设:
1、没有进行加热或热传递操作时,水的温度不会变化。
2、加热时所花费的能量全部被水吸收,杯子不吸收能量。
3、热传递总是隔着杯子进行,n杯水永远不会互相混合。
4、热传递符合能量守恒,而且没有任何的热量损耗。
在这个问题里,只要求把每杯水都至少烧开一遍就可以了,而不要求最终每杯水的温度都是100℃。我们可以用如下操作把两杯水烧开:先把一杯水加热到100℃,花费能量(4200*100/2)J,然后两杯水进行热传递,直到它们的温度都变成50℃为止,最后把原来没有加热到100℃的那杯水加热到100℃,花费能量(4200*50/2)J,此时两杯水都被烧开过了,当前温度一杯100℃,一杯50℃,花费的总能量为(4200*75)J,比直接烧开所需的(4200*100)J少花费了25%的能量。
你的任务是设计一个最佳的操作方案使得n杯水都至少被烧开一遍所需的总能量最少。
输入输出格式
输入格式:
输入文件只有一个数n。
输出格式:
输出n杯水都至少被烧开一遍所需的最少的总能量,单位为J,四舍五入到小数点后两位。
输入输出样例
2
315000.00
说明
1≤n≤50000
很明显存在着规律:
设第一杯水加热到100摄氏度,需要加热A。f[1]=A
则第二杯能从第一杯中获得A/2.f[2]=A/2
第三杯能从第一杯获得A/(2^2),从第二杯获得A/2.f[3]=A/(2^2)
f[i]=A/( (i-1) ^2).
规律就来了.
#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
int n;
double ans=0.00,now;
now=420000.000;
cin>>n;
for(int i=;i<=n;i++)
{
ans+=now;
now=now*(double )( i*- ) /( i* );
}
ans=ans/n;
printf("%.2lf",ans);
return ;
}
最新文章
- Atitit事件代理机制原理 基于css class的事件代理
- 增加UBUNTU字符集 解决中文乱码问题
- JavaServer Faces 2.0 can not be installed解决方案
- Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects
- Android 实现简单音乐播放器(二)
- C++ Set
- docker安装错误
- c语言知识(2)
- (转)Fibonacci Tilings
- int main(int argc,char* argv[]) 简单理解
- Java中的数组问题
- YUV422蓝屏显示输出功能辅助调试
- [转] Spring Boot and React hot loader
- 异常处理:你不可能总是对的 - 零基础入门学习Python032
- http://download.qt-project.org/archive/qt/4.5/qt-all-opensource-src-4.5.2.tar.bz2
- 利用requestjs优化响应式移动端js加载
- 配置Linux Kernel时make menuconfig执行流程分析
- PHP使用文件排它锁,应对小型并发
- MySQL(进阶部分)
- 基于SDL2实现俄罗斯方块
热门文章
- Swift语言学习(三)基础操作符
- poj 1094 Sorting It All Out 解题报告
- Android的三种主流资源尺寸
- python中optparse模块用法
- Code-zabbix:zabbix-3.4-快速入门
- WebService安全解决方案—简单握手协议
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 11. Views 上
- 关于Android ListView组件中android:drawSelectorOnTop含义(转载)
- Untiy检测各类设备输入
- c# dynamic 无法创建 泛型变量的问题