主题链接

  • 题意:

    题意比較麻烦。。

    。n天,给出每天的叶子的一种状态(Dry , Dryish , Damp and Soggy),最有可能出现的天气序列(Sunny, Cloudy and Rainy)

    最開始,第一天处于每种状态有一个提前定义的概率。

    每一天,依据当前的叶子状态,处于每种天气状况有一个给定的概率;题目中还给出随意两种天气状态的转移概率。即前一天处于某种天气时今天处于某种天气的概率。

  • 分析:

    就是简单的DP,每天处于每一个点有一个固定的状态,前一天的每一个状态的转移概率也是给定的,起始点也给定,所以就须要处理一下这些就可以。除此之外,题目中须要输出“路径”,多记录一下就可以
const int maxn = 100010;

double dp[maxn][3];
int ipt[maxn], p[maxn][3];
char s[10];
double d1[][4] =
{
{0.6, 0.2, 0.15, 0.05},
{0.25, 0.3, 0.2, 0.25},
{0.05, 0.1, 0.35, 0.5} };
double d2[][3] =
{
{0.5, 0.375, 0.125},
{0.25, 0.125, 0.625},
{0.25, 0.375, 0.375}
};
map<string, int> mp;
char to[][10] = {"Sunny", "Cloudy", "Rainy"}; int main()
{
mp["Dry"] = mp["Sunny"] = 0;
mp["Dryish"] = mp["Cloudy"] = 1;
mp["Damp"] = mp["Rainy"] = 2;
mp["Soggy"] = 3; int T, n;
RI(T);
FE(kase, 1, T)
{
CLR(p, -1);
RI(n);
REP(i, n)
{
RS(s);
ipt[i] = mp[s];
}
dp[0][0] = log(0.63) + log(d1[0][ipt[0]]);
dp[0][1] = log(0.17) + log(d1[1][ipt[0]]);
dp[0][2] = log(0.2) + log(d1[2][ipt[0]]);
FF(i, 1, n)
{
REP(j, 3)
{
dp[i][j] = -1e10;
REP(k, 3)
{
double pre = dp[i - 1][k] + log(d2[k][j]) + log(d1[j][ipt[i]]);
if (pre > dp[i][j])
{
dp[i][j] = pre;
p[i][j] = k;
}
}
}
}
double Max = -1e10; int c = 0;
REP(j, 3)
if (dp[n - 1][j] > Max)
{
Max = dp[n - 1][j];
c = j;
}
stack<int> sk; int r = n - 1;
while (r >= 0)
{
sk.push(c);
c = p[r--][c];
}
printf("Case #%d:\n", kase);
while (!sk.empty())
{
printf("%s\n", to[sk.top()]);
sk.pop();
}
}
return 0;
}

Peter&#39;s Hobby的更多相关文章

  1. hdu 4865 Peter&#39;s Hobby

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

  2. 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 ...

  3. 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 ...

  4. hdu 4865 Peter&#39;s Hobby(概率dp)

    http://acm.hdu.edu.cn/showproblem.php? pid=4865 大致题意:有三种天气和四种叶子状态.给出两个表,各自是每种天气下叶子呈现状态的概率和今天天气对明天天气的 ...

  5. JSP页面间传递参数的5种方法

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  6. SqlAlchemy操作(一)

    博客转载于 http://www.cnblogs.com/haiyan123/p/8270520.html 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB ...

  7. Peter's Hobby

    Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf humi ...

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

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

  9. HDU 4865 Peter's Hobby --概率DP

    题意:第i天的天气会一定概率地影响第i+1天的天气,也会一定概率地影响这一天的湿度.概率在表中给出.给出n天的湿度,推测概率最大的这n天的天气. 分析:这是引自机器学习中隐马尔科夫模型的入门模型,其实 ...

随机推荐

  1. 基于Grunt的版本号构建系统新手教程

    作者:zhanhailiang 日期:2014-10-12 1. 安装nodejs,npm,grunt-cli.參见<Windows环境下安装nodejs+npm+grunt-cli工具> ...

  2. UVA1455 - Kingdom(并查集 + 线段树)

    UVA1455 - Kingdom(并查集 + 线段树) 题目链接 题目大意:一个平面内,给你n个整数点,两种类型的操作:road x y 把city x 和city y连接起来,line fnum ...

  3. 敏捷开发-Scrum 真实

    近期研究前 Scrum 数据编译的文件,在接下来的团队和项目开发.项目根据该引入 Scrum 一些练习,提高团队成员和项目之间的交付质量的合作. 参考资料: <轻松Scrum之旅-敏捷开发故事& ...

  4. like-minded 都有什么意思_百度知道

    like-minded 都有什么意思_百度知道 like-minded 都有什么意思

  5. atitit.团队建设--要不要招技术储备人才的问题

    atitit.团队建设--要不要招技术储备人才的问题 1.      人才的储备和招聘. 1 1.1.   模式1.     养兵千日,用兵一时 1 1.2. 模式2,暂时抱佛脚,也不多招一个人 1 ...

  6. mixpanel实验教程(2)

    六.发送邮件和推送通知 选择该用户前面的 checkbox,点击 Send A Notification button,从下拉列表中选择 Email Message/Push Notifiaction ...

  7. mongodb - 前端form表单数据传输,在保存和清除的数据格式的处理程序的 - 非递归

    //处理时间段,将ISODate("2014-10-09T18: 37: 50.0Z") 兑换 2014-10-09 18:37:50这样的格式 //截至处理6层树形结构数据,当多 ...

  8. Working with forms

    翻译 Django文档 Version 1.5 https://docs.djangoproject.com/en/1.5/topics/forms Working with forms 关于此文章: ...

  9. The method getDispatcherType() is undefined for the type HttpServletRequest 升级到tomcat8(转)

    配置项目,从tomcat低版本,放到tomcat8时,正常的项目居然报错了: The method getDispatcherType() is undefined for the type Http ...

  10. HDU 4454 - Stealing a Cake(三分)

    我比较快速的想到了三分,但是我是从0到2*pi区间进行三分,并且漏了一种点到边距离的情况,一直WA了好几次 后来画了下图才发现,0到2*pi区间内是有两个极值的,每个半圆存在一个极值 以下是代码 #i ...