题意:第i天的天气会一定概率地影响第i+1天的天气,也会一定概率地影响这一天的湿度.概率在表中给出。给出n天的湿度,推测概率最大的这n天的天气。

分析:这是引自机器学习中隐马尔科夫模型的入门模型,其实在这里直接DP就可以了

定义:dp[i][j]为第i天天气为j(0,1,2分别表示三个天气)的概率,path[i][j]记录路径,path[i][j] = k 意思是前一天天气为k时,这一天有最大的概率是天气j。

做一个三重循环,对于每天,枚举今天的天气,再在里面枚举昨天的天气,则有:

dp[i][j] = max(dp[i-1][k]*yto[k][j]*wtoh[j][humi[i]])

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <string>
#define eps 1e-4
using namespace std; string weather[] = {"Sunny","Cloudy","Rainy"};
double yto[][]={{0.5,0.375,0.125},{0.25,0.125,0.625},{0.25,0.375,0.375}};
double wtoh[][]={{0.6,0.2,0.15,0.05},{0.25,0.3,0.2,0.25},{0.05,0.10,0.35,0.50}};
int humi[],path[][],ans[];
double dp[][]; int gethum(string ss)
{
if(ss == "Dry")
return ;
else if(ss == "Dryish")
return ;
else if(ss == "Damp")
return ;
else
return ;
} int main()
{
int t,cs = ,i,j,n,k;
string ss;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<n;i++)
{
cin>>ss;
int hum = gethum(ss);
humi[i] = hum;
}
for(i=;i<=n;i++)
for(j=;j<;j++)
dp[i][j] = 0.0;
memset(path,,sizeof(path));
dp[][] = 0.63*wtoh[][humi[]];
dp[][] = 0.17*wtoh[][humi[]];
dp[][] = 0.20*wtoh[][humi[]];
for(i=;i<n;i++)
{
for(j=;j<;j++) //today's weather
{
for(k=;k<;k++) //yesterday's weather
{
double P = dp[i-][k]*yto[k][j]*wtoh[j][humi[i]];
if(P > dp[i][j])
{
dp[i][j] = P;
path[i][j] = k;
}
}
}
}
int now = ;
for(i=;i<;i++)
{
if(dp[n-][i] > dp[n-][now])
now = i;
}
ans[n-] = now;
for(i=n-;i>=;i--)
{
now = path[i+][now];
ans[i] = now;
}
printf("Case #%d:\n",cs++);
for(i=;i<n;i++)
cout<<weather[ans[i]]<<endl;
}
return ;
}

HDU 4865 Peter's Hobby --概率DP的更多相关文章

  1. 2014多校第一场 E 题 || HDU 4865 Peter's Hobby (DP)

    题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你 ...

  2. HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)

    题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...

  3. HDU 4865 Peter's Hobby(概率、dp、log)

    给出2个影响矩阵,一个是当天天气对湿度的影响,一个是前一天天气对当天天气的影响. 即在晴天(阴天.雨天)发生Dry(Dryish.Damp.Soggy)的概率,以及前一天晴天(阴天.雨天)而今天发生晴 ...

  4. HDU 4865 Peter's Hobby

    $dp$. 这题的本质和求一个有向无环图的最长路径长度的路径是一样的. $dp[i][j]$表示到第$i$天,湿度为$a[i]$,是第$j$种天气的最大概率.记录一下最大概率是$i-1$天哪一种天气推 ...

  5. hdu 4865 Peter&#39;s Hobby (隐马尔可夫模型 dp)

    Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  6. hdu 4865 Peter&#39;s Hobby(2014 多校联合第一场 E)

    Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  7. hdu 4865 Peter&#39;s Hobby

    Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. HDU 5781 ATM Mechine (概率DP)

    ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...

  9. HDU 4050 wolf5x(动态规划-概率DP)

    wolf5x Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

随机推荐

  1. Delphi的几个跨平台小游戏例子。

    Embarcadero开源了几个FireMonkey的小游戏,支持Windows, Android,Ios, MacOS等. 源码地址: https://github.com/EmbarcaderoP ...

  2. jQuery coveringBad 效果对比

    Covering-Bad 是一个可拉动大小的元素,覆盖在原有的元素上面,从而两者进行对比. 在线实例 实例演示1    实例演示2 使用方法 <div class="covered&q ...

  3. android ArrayAdapter BaseAdapter SimpleAdapter使用讲解

    不是我针对谁,我只想针对新手玩家. 不清楚Adapter作用的可以看一下http://www.cnblogs.com/zhichaobouke/p/5798672.html (括号里的内容都是我主观添 ...

  4. eclipse导入svn项目,项目却没有svn的标记

    现象: eclipse(已经装有svn插件)导入svn项目,项目没有svn的标记. 原因: 1.可能是由于你的svn eclipse插件,也就是subclipse,与svn的客户端版本不匹配. 解决 ...

  5. [ javascript New Image() ] New Image() 对象讲解

    创建一个Image对象:var a=new Image();    定义Image对象的src: a.src="xxx.gif";    这样做就相当于给浏览器缓存了一张图片. 图 ...

  6. c++ const用法小结

    const用法 1,定义全局变量的内存分配问题 #define  Pi_1  3.14       //使用#define宏 const double Pi_2 = 3.14    //使用const ...

  7. 【读书笔记】iOS-Xcode知识-多线程

    一,Xcode使用的调试器是GDB.GDB是GNU项目的一部分,它可以在很多不同的平台上使用.如果你愿意,可以通过命令行来运行它.GDB有着完善的文档系统,尽管它的文档有些难于理解并且网络上流传着好几 ...

  8. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  9. mac上的替代软件

    文本编辑器:bbedit 视频播放器:Movist 图片浏览:LilyView 远程桌面:Remotix 虚拟主机:parallels desktop svn client:cornerstone o ...

  10. HTML页面定时跳转方法

    1)html的实现 <head> <meta http-equiv="refresh" content="5;url=hello.html"& ...