主题链接

  • 题意:

    题意比較麻烦。。

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

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

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

  • 分析:

    就是简单的DP,每天处于每一个点有一个固定的状态,前一天的每一个状态的转移概率也是给定的,起始点也给定,所以就须要处理一下这些就可以。除此之外,题目中须要输出“路径”,多记录一下就可以
  1. const int maxn = 100010;
  2.  
  3. double dp[maxn][3];
  4. int ipt[maxn], p[maxn][3];
  5. char s[10];
  6. double d1[][4] =
  7. {
  8. {0.6, 0.2, 0.15, 0.05},
  9. {0.25, 0.3, 0.2, 0.25},
  10. {0.05, 0.1, 0.35, 0.5}
  11.  
  12. };
  13. double d2[][3] =
  14. {
  15. {0.5, 0.375, 0.125},
  16. {0.25, 0.125, 0.625},
  17. {0.25, 0.375, 0.375}
  18. };
  19. map<string, int> mp;
  20. char to[][10] = {"Sunny", "Cloudy", "Rainy"};
  21.  
  22. int main()
  23. {
  24. mp["Dry"] = mp["Sunny"] = 0;
  25. mp["Dryish"] = mp["Cloudy"] = 1;
  26. mp["Damp"] = mp["Rainy"] = 2;
  27. mp["Soggy"] = 3;
  28.  
  29. int T, n;
  30. RI(T);
  31. FE(kase, 1, T)
  32. {
  33. CLR(p, -1);
  34. RI(n);
  35. REP(i, n)
  36. {
  37. RS(s);
  38. ipt[i] = mp[s];
  39. }
  40. dp[0][0] = log(0.63) + log(d1[0][ipt[0]]);
  41. dp[0][1] = log(0.17) + log(d1[1][ipt[0]]);
  42. dp[0][2] = log(0.2) + log(d1[2][ipt[0]]);
  43. FF(i, 1, n)
  44. {
  45. REP(j, 3)
  46. {
  47. dp[i][j] = -1e10;
  48. REP(k, 3)
  49. {
  50. double pre = dp[i - 1][k] + log(d2[k][j]) + log(d1[j][ipt[i]]);
  51. if (pre > dp[i][j])
  52. {
  53. dp[i][j] = pre;
  54. p[i][j] = k;
  55. }
  56. }
  57. }
  58. }
  59. double Max = -1e10; int c = 0;
  60. REP(j, 3)
  61. if (dp[n - 1][j] > Max)
  62. {
  63. Max = dp[n - 1][j];
  64. c = j;
  65. }
  66. stack<int> sk; int r = n - 1;
  67. while (r >= 0)
  68. {
  69. sk.push(c);
  70. c = p[r--][c];
  71. }
  72. printf("Case #%d:\n", kase);
  73. while (!sk.empty())
  74. {
  75. printf("%s\n", to[sk.top()]);
  76. sk.pop();
  77. }
  78. }
  79. return 0;
  80. }

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. VSTO 得到Office文档的选中内容(Word、Excel、PPT、Outlook)

    原文:VSTO 得到Office文档的选中内容(Word.Excel.PPT.Outlook) 目的:得到在Word.Excel.PPT.Outlook中选中的一段内容. Word: private ...

  2. win7下硬盘安装win7+CentOS双系统方法

    原文:win7下硬盘安装win7+CentOS双系统方法 LinuxCentOS安装大致介绍: win7下硬盘安装win7+CentOS双系统方法 原则: 所有的看完在装,请仔细看 一 条件: 1. ...

  3. javascritp封装的类似java HashMap的类

    function Map(){ this.init(); }; //map的大小 Map.prototype.size = function(){ return this._size; }; //将数 ...

  4. mongodb中的排序和索引快速学习

    在mongodb中,排序和索引其实都是十分容易的,先来小结下排序: 1 先插入些数据    db.SortTest.insert( { name : "Denis", age : ...

  5. HTC one/M7电信802d 毒蛇ViperOne2.1.0/高级毒蛇工具/完美root,精简/更多自定义,稳定,流畅ROM

    ROM版本 HTC One/M7 802d ROM作者 雪狼团队·大盛 http://weibo.com/DaShengdd Android版本 Android 4.2.2 创建日期 2013.09. ...

  6. POJ 1088 滑雪 记忆化优化题解

    本题有人写是DP,只是和DP还是有点区别的,应该主要是记忆化 Momoization 算法. 思路就是递归,然后在递归的过程把计算的结果记录起来,以便后面使用. 非常经典的搜索题目,这样的方法非常多题 ...

  7. RabbitMq消息序列化简述

    涉及网络传输的应用.序列化不可避免. 发送端以某种规则将消息转成byte数组进行发送. 接收端则以约定的规则进行byte[]数组的解析. 序列化的选择能够是jdk序列化,hessian,jackson ...

  8. 碎碎念,浅饮-------Day30

    这不是关于技术的文章,它偏离了我原来的计划轨迹.但,我相信这将是远远超出了技术的意义使我无论什么价格值. 高考已经开始,不知道在这片宁静的夜空下有多少人已经美美的睡了,香甜憨然.又有多少人这睡着的眼角 ...

  9. Linux中块设备驱动程序分析

    基于<Linux设备驱动程序>书中的sbull程序以对Linux块设备驱动总结分析. 開始之前先来了解这个块设备中的核心数据结构: struct sbull_dev {         i ...

  10. python学习笔记之九:模块和包

    Python的标准安装包括一组模块,称为标准库.这里介绍模块的工作方式,学习如何使用它们. 一. 模块 1.1 用import从外部模块获取函数并为自己的程序所用: >>> from ...