HDU 4865 Peter's Hobby --概率DP
题意:第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的更多相关文章
- 2014多校第一场 E 题 || HDU 4865 Peter's Hobby (DP)
题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你 ...
- HDU 4865 Peter's Hobby(2014 多校联合第一场 E)(概率dp)
题意:已知昨天天气与今天天气状况的概率关系(wePro),和今天天气状态和叶子湿度的概率关系(lePro)第一天为sunny 概率为 0.63,cloudy 概率 0.17,rainny 概率 0.2 ...
- HDU 4865 Peter's Hobby(概率、dp、log)
给出2个影响矩阵,一个是当天天气对湿度的影响,一个是前一天天气对当天天气的影响. 即在晴天(阴天.雨天)发生Dry(Dryish.Damp.Soggy)的概率,以及前一天晴天(阴天.雨天)而今天发生晴 ...
- HDU 4865 Peter's Hobby
$dp$. 这题的本质和求一个有向无环图的最长路径长度的路径是一样的. $dp[i][j]$表示到第$i$天,湿度为$a[i]$,是第$j$种天气的最大概率.记录一下最大概率是$i-1$天哪一种天气推 ...
- hdu 4865 Peter's Hobby (隐马尔可夫模型 dp)
Peter's Hobby Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- hdu 4865 Peter's Hobby(2014 多校联合第一场 E)
Peter's Hobby Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- hdu 4865 Peter's Hobby
Peter's Hobby Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- HDU 5781 ATM Mechine (概率DP)
ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...
- HDU 4050 wolf5x(动态规划-概率DP)
wolf5x Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
随机推荐
- lnmp+phpmyadmin配置与出现问题
本博客归moka同学(新浪微博:moka同学)本人亲自整理,如有使用,请加链接注明出处. lnmp 安装完全后,配置phpmyadmin .其访问方式为 http://202.18.400.379/p ...
- Git分支(远程)
1.远程分支的表示形式:远程仓库名称/分支名,如:origin/master: 2.一次Git克隆会建立你自己的本地分支:master和远程分支:origin/master,它们都指向origin ...
- jvisualvm远程监控jvm设置
有些时候,需要对特定环境中的Java应用进行实时性能分析,大部分非开发和测试环境,一般都是用jvisualvm进行基本检测以最小化对系统的影响(其开启后,负载影响大约20%-30%),jvisualv ...
- Java正则表达式实用教程
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.java.util.regex包主要包括以下三个类:Pattern.Matcher和PatternSynta ...
- 使用Vue编写点击数字小游戏
使用vue编写一个点击数字计时小游戏,列入你在文本框中输入3,点击开始会生成一个3行3列的表格,表格数据为1-9随机排列,这时候从1开始点击,按顺序点到9,当按正确顺序点击完毕,会提示所用的时间,如果 ...
- has_many :through VS has_and_belongs_to_many
user role has_and_belongs_to_many role.destroy: 关联表user_roles先删除记录,再role删除. has_many :through user. ...
- ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段
Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.PARAMETERS ...
- 破解 “PEDIY CrackMe 2007” 之 KeygenMe_1_by_boonz
系统 : Windows xp 程序 :KeygenMe_1_by_boonz 程序下载地址 :http://www.crackmes.de/users/boonz/keygenme_1_by_boo ...
- Mybatis学习记录(五)----Mybatis的动态SQL
1. 什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.1 需求 用户信息综合查询列表和用户信息查询列表总数这两个statemen ...
- ad组策略和sharepoint office打开文档关系
组策略管理器 组策略继承 新建组策略 更新组策略 服务器端 1.cmd命令:gpupdate /force 2.更新ad站点与服务,针对多台ad 客户端 1.cmd命令:gpupdate /force ...