hdu 4412 利用单调性的动态规划
思路:
这题和1227的求法一样,只不过1227是小数据,暴力下,就能进行预处理。
这题的预处理区间期望cost[i][j]需要利用单调性。
即假使以pos位置为安排的点,那么这个区间在其左边的概率为l,右边的概率为r,总期望为sum。如果将安排点从pos放到pos-1
该区间增加的期望为r*(p[pos].x-p[pos-1].x)
减少的期望为l*(p[pos].x-p[pos-1].x)
如果减少的超过增加的,那么pos-1就比pos好。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define Maxn 1010
using namespace std;
double dp[Maxn][],cost[Maxn][Maxn];
struct Point{
int x;
double p;
}p[Maxn];
map<int ,double> vi;
int main()
{
int n,m,i,j,l,x,k;
double cc;
while(scanf("%d%d",&n,&m)!=EOF,n||m)
{
memset(dp,,sizeof(dp));
memset(p,,sizeof(p));
memset(cost,,sizeof(cost));
vi.clear();
int mx=;
for(i=;i<=n;i++)
{
scanf("%d",&l);
while(l--)
{
scanf("%d%lf",&x,&cc);
vi[x]+=cc;
}
}
int cnt=;
map<int ,double> ::iterator it;
for(it=vi.begin();it!=vi.end();it++)
p[++cnt].x=it->first,p[cnt].p=it->second;
double l,r,sum;
int pos;
double t;
for(i=cnt;i>;i--)
{
l=r=sum=;
r=p[i].p;
pos=i;
for(j=i-;j>=;j--)
{
l+=p[j].p;
sum+=p[j].p*(p[pos].x-p[j].x);
while(pos>&&(t=(r-l)*(p[pos].x-p[pos-].x))<)
{
sum+=t;
pos--;
l-=p[pos].p;
r+=p[pos].p;
}
cost[j][i]=sum;
}
}
for(i=;i<=cnt;i++)
dp[i][]=cost[][i];
for(i=;i<=m;i++)
dp[][i]=;
for(k=;k<=m;k++)
{
for(i=;i<=cnt;i++)
{
if(i<=k) {dp[i][k]=;continue;}
dp[i][k]=1e20;
for(j=i-;j>=;j--)
dp[i][k]=min(dp[i][k],dp[j][k-]+cost[j+][i]);
}
}
printf("%.2lf\n",dp[cnt][m]);
}
return ;
}
hdu 4412 利用单调性的动态规划的更多相关文章
- HDU 1176 免费馅饼 (动态规划)
HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...
- HDU 1074 Doing Homework (动态规划,位运算)
HDU 1074 Doing Homework (动态规划,位运算) Description Ignatius has just come back school from the 30th ACM/ ...
- hdu 4412 Sky Soldiers DP
动态规划,主要是用单调性求区间的最小期望. 代码如下: #include<iostream> #include<stdio.h> #include<algorithm&g ...
- HDU 1003 Max Sum【动态规划求最大子序列和详解 】
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 5433 Xiao Ming climbing 动态规划
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5433 Xiao Ming climbing Time Limit: 2000/1000 MS (Ja ...
- hdu 1421:搬寝室(动态规划 DP + 排序)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- ACM学习历程—HDU 5534 Partial Tree(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题目大意是给了n个结点,让后让构成一个树,假设每个节点的度为r1, r2, ...rn,求f(x ...
- HDU 2084 数塔 (动态规划DP)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目分析:此题采用动态规划自底向上计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后一排 ...
- hdu 4412 2012杭州赛区网络赛 期望
虽然dp方程很好写,就是这个期望不知道怎么求,昨晚的BC也是 题目问题抽象之后为:在一个x坐标轴上有N个点,每个点上有一个概率值,可以修M个工作站, 求怎样安排这M个工作站的位置,使得这N个点都走到工 ...
随机推荐
- Servlet容器的启动过程
[http://book.51cto.com/art/201408/448854.htm] Tomcat的启动逻辑是基于观察者模式设计的,所有的容器都会继承Lifecycle接口,它管理着容器的整 ...
- jQuery Attributes vs. Properties
Attributes vs. Properties attributes和properties之间的差异在特定情况下是很重要.jQuery 1.6之前 ,.attr()方法在取某些 attribute ...
- 使用jQuery-AJAX–读取获得跨域JSONP数据的示例
在项目开发中,如果在同一个域名下就不存在跨域情况,使用$.getJSON()即可实现.但是需要跨域请求其他域名下面的Json数据就需要JSONP的方式去请求,跨域写法和getJSON有差异.如下: ...
- 怎样利用App打造自明星实现自盈利
怎样利用App打造自明星实现自盈利 1.了解各个概念 为了大家都能看懂这篇文章,先说明几个概念. App(Application):能够在移动设备上使用,满足人们咨询.购物. ...
- 初次接触CodeSmith
说到开发效率的提高,代码生成器肯定是其中必不可少的重点.说到代码生成器,鼎鼎大名CodeSmith肯定是如雷贯耳. CodeSmith最大的特点是能够自定义模板(通俗的说就是想生成什么样就可以生成什么 ...
- Grunt打造前端自动化工作流
HTML去掉注析.换行符 - HtmlMin CSS文件压缩合并 – CssMinify JS代码风格检查 – JsHint JS代码压缩 – Uglyfy image压缩 - imagemin ht ...
- JavaScript中事件捕获(Event capturing)-------------->由外向内,事件冒泡(Event bubblin)---------->由内向外
addEventListener("click", function() {}, useCapture:false); <!DOCTYPE html> <html ...
- [Node.js] CommonJS Modules
CoomonJS modules provide a clean syntax for importing dependencies. This lesson will take a look at ...
- JRebel_修改class后无法正确调试问题解决【2014-03-12】
原文地址:http://www.cnblogs.com/hbbbs/p/3596179.html 现象 修改了class,编译后,JRebel自动装载到Web容器中.但此时调试这个类会发现无法正常调试 ...
- LINUX 逻辑地址、线性地址、物理地址和虚拟地址 转
一.概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应.——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地 ...