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

代码如下:

 #include<iostream>
 #include<stdio.h>
 #include<algorithm>
 #include<iomanip>
 #include<cmath>
 #include<cstring>
 #include<vector>
 #include<map>
 #define MAX 1004
 #define inf 1<<22
 using namespace std;
 double dp[MAX][MAX],b,add,l,r;
 map<int,double>q;
 struct node
 {
     int x;
     double p;
 }an[MAX];
 void init(int m)
 {
     int i,j;
     ;i<=;i++)
         ;j<=;j++)
             dp[i][j]=inf;
     ;i<=m;i++)
         for(j=i;j<=m;j++)
             dp[i][j]=0.0;
 }
 int main(){
     int n,m,k,i,j,a;
     while(scanf("%d%d",&n,&m)&&(n+m)){
         q.clear();
         ;i<n;i++){
             scanf("%d",&k);
             ;j<k;j++){
                 scanf("%d%lf",&a,&b);
                 q[a]+=b;
             }
         }
         n=;
         for(map<int,double>::iterator it=q.begin();it!=q.end();it++){
             an[++n].x=it->first;
             an[n].p=it->second;
         }
         init(m);
         ;i<=n;i++){
             ;j<=m&&j<=i;j++){
                 dp[i][j]=inf;
                 double pre=0.0,suf=0.0;
                 int cur=i;add=0.0;
                 ;k>=j-;k--){
                     !=i){
                         pre+=an[k+].p;
                         add+=an[k+].p*(an[cur].x-an[k+].x);
                     }
                     while(an[cur].p+suf<pre){
                         suf+=an[cur].p;
                         cur--;
                         pre-=an[cur].p;
                         ].x-an[cur].x;
                         add-=an[cur].p*t;
                         add+=an[cur+].p*t;
                         add-=pre*t;
                         add+=(suf-an[cur+].p)*t;
                     }
                     dp[i][j]=min(dp[i][j],dp[k][j-]+add);
                 }
             }
         }
         printf("%.2lf\n",dp[n][m]);
     }
     ;
 }

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. Vuejs使用笔记 --- component内部实现

    现在来系统地学习一下Vue(参考vue.js官方文档): Vue.js是一个构建数据驱动的web界面的库,其目标是实现响应的数据绑定和组合的试图组件. Vue.js拥抱数据驱动的视图概念,这意味着我们 ...

  2. C 解决百度知道的一个高中题

    前言 今天看见一道百度知道上提问,是这样的. 仔细算了一下, 花了30min.才整出来了,估计现在回去参加高考,数学及格都悬.有时候想做这样的题有什么用, 学这些东西有什么意义,在这种方面浪费时间有什 ...

  3. Redis 网络通信及连接机制学习

    看了这篇文章 http://blog.nosqlfan.com/html/4153.html 本文所述内容基于 Redis2.6 及以上版本. 注:在客户端通过 info 命令可以查看服务器版本信息, ...

  4. B. Mr. Kitayuta&#39;s Colorful Graph

     B. Mr. Kitayuta's Colorful Graph  time limit per test 1 second Mr. Kitayuta has just bought an undi ...

  5. (转)使用Visual Studio 2015开发Android 程序

    环境配置: 操作系统:win 7 64位 IDE:Visual Studio 2015 SDK:installer_r24.3.3-windows 安装前提: 编辑hosts文件(在附件可下载)因为安 ...

  6. 素数与素性测试(Miller-Rabin测试)

    转载自Matrix大牛的博客 把代码翻译成C++ http://www.matrix67.com/blog/archives/234 题目链接: http://hihocoder.com/proble ...

  7. [jQuery] jQuery如何获取同一个类标签的所有的值

    碰巧在开发的时候遇到这个问题,因为jQuery总是只返回第一个类标签的值,所以无法达到我们的要求. 比如: var btn = jQuery('.btn').val(); 获取的只是第一个类标签为bt ...

  8. java学习之网络编程之echo程序

    服务端的实现 package com.gh.echo; import java.io.*; import java.net.*; /** * echo服务器程序 * 实现 不断接收字符串 ,然后返回一 ...

  9. 关于linux 原始套接字编程

    关于linux 网络编程最权威的书是<<unix网络编程>>,但是看这本书时有些内容你可能理解的不是很深刻,或者说只知其然而不知其所以然,那么如果你想搞懂的话那么我建议你可以看 ...

  10. 用C#实现的两个试验编程(txt文本数据的导入,和数据导出为TXT)

    1. 文件的存取 数据文件1.txt为学生成绩统计表,要对它做一个统计工作.文件中若一个人有多个成绩,则取他们的最好成绩来统计,然后计算全班平均成绩:统计0-69.70-79.80-89.90-100 ...