您的位置:首页 > 其它

POJ 3299 Humidex 减半递推

2014-04-10 11:47 267 查看
点击打开链接

题意 温度是T,湿度是D ,湿热是H ; 给其二求一;

     已知公式:  H= T+ calD (d);

减半递推就是在问题规模N已知情况下,在问题性质不变基础上,研究 N/2规模,再将n/2 改换成 n/2/2=n/4;

 

  #include<stdio.h>
#include<string.h>
#include<math.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map<char,double>m;
double calD(double x)
{
double e=6.11*exp(5417.7530*((1/273.16)-(1/(x+273.16))));
double h=0.5555 *(e-10.0);
return h;
}
int main()
{

freopen("in.in","r",stdin);
char s1,s2;
double t1,t2;
while(~scanf("%s",&s1),s1!='E')
{
scanf("%lf %c %lf",&t1,&s2,&t2);
char tp='T'+'D'+'H'-s1-s2;
m[s1]=t1;
m[s2]=t2;
if(tp=='T')
{
m[tp]=m['H']-calD(m['D']);
}
else if(tp=='H')
{
m[tp]=m['T']+calD(m['D']);
}
else if(tp=='D')
{
double x=0;
double data=100;
double dis=m['H']-m['T'];
for(data=100;data>0.00001;data*=0.5)
{
if(calD(x)>dis) x-=data;
else x+=data;
}
m['D']=x;
}
printf("T %.1f D %.1f H %.1f\n",m['T'],m['D'],m['H']);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: