动态规划,主要是用单调性求区间的最小期望。

代码如下:

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<iomanip>
  5. #include<cmath>
  6. #include<cstring>
  7. #include<vector>
  8. #include<map>
  9. #define MAX 1004
  10. #define inf 1<<22
  11. using namespace std;
  12. double dp[MAX][MAX],b,add,l,r;
  13. map<int,double>q;
  14. struct node
  15. {
  16. int x;
  17. double p;
  18. }an[MAX];
  19. void init(int m)
  20. {
  21. int i,j;
  22. for(i=;i<=;i++)
  23. for(j=;j<=;j++)
  24. dp[i][j]=inf;
  25. for(i=;i<=m;i++)
  26. for(j=i;j<=m;j++)
  27. dp[i][j]=0.0;
  28. }
  29. int main(){
  30. int n,m,k,i,j,a;
  31. while(scanf("%d%d",&n,&m)&&(n+m)){
  32. q.clear();
  33. for(i=;i<n;i++){
  34. scanf("%d",&k);
  35. for(j=;j<k;j++){
  36. scanf("%d%lf",&a,&b);
  37. q[a]+=b;
  38. }
  39. }
  40. n=;
  41. for(map<int,double>::iterator it=q.begin();it!=q.end();it++){
  42. an[++n].x=it->first;
  43. an[n].p=it->second;
  44. }
  45. init(m);
  46. for(i=;i<=n;i++){
  47. for(j=;j<=m&&j<=i;j++){
  48. dp[i][j]=inf;
  49. double pre=0.0,suf=0.0;
  50. int cur=i;add=0.0;
  51. for(k=i-;k>=j-;k--){
  52. if(k+!=i){
  53. pre+=an[k+].p;
  54. add+=an[k+].p*(an[cur].x-an[k+].x);
  55. }
  56. while(an[cur].p+suf<pre){
  57. suf+=an[cur].p;
  58. cur--;
  59. pre-=an[cur].p;
  60. int t=an[cur+].x-an[cur].x;
  61. add-=an[cur].p*t;
  62. add+=an[cur+].p*t;
  63. add-=pre*t;
  64. add+=(suf-an[cur+].p)*t;
  65. }
  66. dp[i][j]=min(dp[i][j],dp[k][j-]+add);
  67. }
  68. }
  69. }
  70. printf("%.2lf\n",dp[n][m]);
  71. }
  72. return ;
  73. }

hdu 4412 Sky Soldiers DP的更多相关文章

  1. hdu 4412 Sky Soldiers(区间DP)

    Sky Soldiers Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  2. 【HDOJ】4412 Sky Soldiers

    1. 题目描述有$k$个伞兵跳伞,有$m$个汇点.当伞兵着陆后,需要走向离他最近的汇点.如何选择这$m$个结点,可以使得士兵最终行走的距离的期望最小.求这个最小的期望. 2. 基本思路假设已经选好了这 ...

  3. HDU 1011 树形背包(DP) Starship Troopers

    题目链接:  HDU 1011 树形背包(DP) Starship Troopers 题意:  地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...

  4. hdu 2296 aC自动机+dp(得到价值最大的字符串)

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

  5. HDU 4778 状压DP

    一看就是状压,由于是类似博弈的游戏.游戏里的两人都是绝对聪明,那么先手的选择是能够确定最终局面的. 实际上是枚举最终局面情况,0代表是被Bob拿走的,1为Alice拿走的,当时Alice拿走且满足变换 ...

  6. HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)

    HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解) 题意分析 要先排序,在做01背包,否则不满足无后效性,为什么呢? 等我理解了再补上. 代码总览 #in ...

  7. HDOJ(HDU).2546 饭卡(DP 01背包)

    HDOJ(HDU).2546 饭卡(DP 01背包) 题意分析 首先要对钱数小于5的时候特别处理,直接输出0.若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对除去价格最贵的所有菜做01背包.因为 ...

  8. HDOJ(HDU).2602 Bone Collector (DP 01背包)

    HDOJ(HDU).2602 Bone Collector (DP 01背包) 题意分析 01背包的裸题 #include <iostream> #include <cstdio&g ...

  9. HDOJ(HDU).1058 Humble Numbers (DP)

    HDOJ(HDU).1058 Humble Numbers (DP) 点我挑战题目 题意分析 水 代码总览 /* Title:HDOJ.1058 Author:pengwill Date:2017-2 ...

随机推荐

  1. 如何更改Json.NET的序列化规则

    我想要使序列化出来的JSON都是小写,可以通过建立 LowercaseContractResolver:DefaultContractResolver 来实现, 创建Custom ContractRe ...

  2. activiti搭建(一)初始化数据库

    转载请注明源地址:http://www.cnblogs.com/lighten/p/5876681.html activiti-engine.jar包中自带了创建activiti工作流数据库表的SQL ...

  3. <邮件服务postfix+mysql>MAIL第二篇

    环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇 玩此服务的前提是你的系统装好了msql和postfix服务. Postfix+mysql主要是把邮件服务的发与mysql结合使用.当然mysq ...

  4. 例题6-3 Matrix Chain Multiplication ,Uva 442

    这个题思路没有任何问题,但还是做了近三个小时,其中2个多小时调试 得到的经验有以下几点: 一定学会调试,掌握输出中间量的技巧,加强gdb调试的学习 有时候代码不对,得到的结果却是对的(之后总结以下常见 ...

  5. 自定义视图(继承View)

    前言 Android提供了丰富的控件,但是有时候还是不能满足自己的需求,这时候就需要自定义视图了,自定义视图分为几种,一种为继承为View的,一种为继承于ViewGroup的.继承于View的需要我们 ...

  6. Yii2框架数据库增删改查小结

    User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数据: User::find()->wh ...

  7. php后台如何避免用户直接进入方法实例

    这篇文章介绍了php后台如何避免用户直接进入方法实例,有需要的朋友可以参考一下 1)创建BaseController控制器继承Controller(后台的一切操作要继承BaseController): ...

  8. ref 和out的用法以及区别

    在项目其实很少用ref和out,但是我们常用的工具resharep在帮我们重构的时候难免会给我们重构成带有ref或者是out的方法. 本人也是用的少所以难免忘记,留下简略笔记,以供后来自我参考: 为何 ...

  9. wxPython + Boa 练习程序

    最近需要做点支持linux的跨平台gui,网上查到了wxPython及Boa,感觉不错,照着Boa文档做做练习. 代码: App: #!/usr/bin/env python #Boa:App:Boa ...

  10. pt-query-digest分析mysql查询日志

    [root@hank-yoon log]# pt-query-digest slowq.log # 200ms user time, 10ms system time, 24.39M rss, 205 ...