跟POJ 3042是一个类型的http://blog.csdn.net/qq_31785871/article/details/52954924

思路:

先排个序 (把初始位置也插进去)

f[i][j]表示从第i个到第j个之间的蛋都被收完了

f[i][j][0]表示在地点i f[i][j][1]表示在地点j

维护一个sumv数组 是v的前缀和

f[i][j][0]=max(f[i+1][j][0]-(node[i+1].x-node[i].x)*(sumv[n]-sumv[j]+sumv[i]),

f[i+1][j][1]-(node[j].x-node[i].x)*(sumv[n]-sumv[j]+sumv[i])),

f[i][j][1]=max(f[i][j-1][0]-(node[j].x-node[i].x)*(sumv[n]-sumv[j-1]+sumv[i-1]),

f[i][j-1][1]-(node[j].x-node[j-1].x)*(sumv[n]-sumv[j-1]+sumv[i-1]));

最后加上所有的y之和就好啦

注意把数组付上初值!!@某人

//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,x0,sumy,sumv[1005],f[1005][1005][2];
struct Node{int x,y,v;}node[1005];
bool cmp(Node a,Node b){return a.x<b.x;}
int main(){
scanf("%d%d",&n,&x0);
for(int i=1;i<=n;i++)scanf("%d",&node[i].x);
for(int i=1;i<=n;i++)scanf("%d",&node[i].y),sumy+=node[i].y;
for(int i=1;i<=n;i++)scanf("%d",&node[i].v);
node[++n].x=x0;
sort(node+1,node+1+n,cmp);
for(int i=1;i<=n;i++){
if(node[i].x!=x0)f[i][i][0]=f[i][i][1]=0xcfffffff;
sumv[i]=sumv[i-1]+node[i].v;
}
for(int i=n;i;i--)
for(int j=i+1;j<=n;j++)
f[i][j][0]=max(f[i+1][j][0]-(node[i+1].x-node[i].x)*(sumv[n]-sumv[j]+sumv[i]),
f[i+1][j][1]-(node[j].x-node[i].x)*(sumv[n]-sumv[j]+sumv[i])),
f[i][j][1]=max(f[i][j-1][0]-(node[j].x-node[i].x)*(sumv[n]-sumv[j-1]+sumv[i-1]),
f[i][j-1][1]-(node[j].x-node[j-1].x)*(sumv[n]-sumv[j-1]+sumv[i-1]));
printf("%.3lf\n",0.001*(max(f[1][n][0],f[1][n][1])+sumy));
}

BZOJ 2037 区间DP的更多相关文章

  1. BZOJ 1068 (区间DP)

    题意:字符串的压缩,f[l][r][0]代表还没M,f[l][r][1]代表有M. #include<cstdio> #include<cmath> #include<c ...

  2. bzoj 1261 区间DP

    首先我们知道ans=Σ(h[i]*f[i])=Σ(h[i]*d[i])/s=Σ(k(r[i]+1)+c)*d[i]/s=Σ(k*r[i]+(k+c))*d[i]/s 我们可以发现,除了k*r[i]之外 ...

  3. BZOJ 1055 区间DP

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1144  Solved: 668[Submit][Statu ...

  4. BZOJ 1260 - 区间dp

    Magic Door 题目大意: 给一个字符串,问需要至少覆盖多少次. 题目分析 区间dp: dp[i][j]表示达到i~j这个状态的最少覆盖次数,分两种情况: s[i] == s[j]: 此时内层可 ...

  5. BZOJ 1090 - 区间dp

    Magic Door 题目大意: 给一个字符串,可以将重复的串缩成x(a),表示x个a,求能缩成的最小长度. 题目分析 区间dp: dp[i][j]表示i~j处理后的最小长度, 则有 \[dp[i][ ...

  6. bzoj 1996 区间dp

    1996: [Hnoi2010]chorus 合唱队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1727  Solved: 1115[Submit][ ...

  7. [CQOI2007]涂色 BZOJ 1260 区间dp

    题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...

  8. BZOJ.4897.[Thu Summer Camp2016]成绩单(区间DP)

    BZOJ 显然是个区间DP.令\(f[l][r]\)表示全部消掉区间\([l,r]\)的最小花费. 因为是可以通过删掉若干子串来删子序列的,所以并不好直接转移.而花费只与最大最小值有关,所以再令\(g ...

  9. [BZOJ 1652][USACO 06FEB]Treats for the Cows 题解(区间DP)

    [BZOJ 1652][USACO 06FEB]Treats for the Cows Description FJ has purchased N (1 <= N <= 2000) yu ...

随机推荐

  1. Linux VNC Viewer客户端

    1.realvnc-vnc-viewer 这个我感觉应该是做的做好用的VNC Viewer客户端了,毕竟是商业软件,但是VNC Viewer客户端是免费的.使用前 需要到官网下载对应发行版的软件包进行 ...

  2. tensorboard 使用

    TensorBoard是TensorFlow 的可视化工具.主要为了更方便用户理解 TensorFlow 程序.调试与优化,用户可以用 TensorBoard 来展现 TensorFlow 图像,绘制 ...

  3. [POI2011]MET-Meteors 整体二分_树状数组_卡常

    线段树肯定会 TLE 的,必须要用树状数组. Code: // luogu-judger-enable-o2 #include <cstdio> #include <algorith ...

  4. react 中间件相关的一些源码解析

    零.随便说说中间件 在react的使用中,我们可以将数据放到redux,甚至将一些数据相关的业务逻辑放到redux,这样可以简化我们组件,也更方便组件抽离.封装.复用,只是redux不能很好的处理异步 ...

  5. bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...

  6. vue+element-ui的简洁导入导出功能

    1.前段后台管理系统中数据展示一般都是用表格,表格会涉及到导入和导出;原生js导出excel2.导入是利用element-ui的Upload 上传组件; <el-upload class=&qu ...

  7. [USACO15JAN]草鉴定Grass Cownoisseur(分层图+tarjan)

    [USACO15JAN]草鉴定Grass Cownoisseur 题目描述 In an effort to better manage the grazing patterns of his cows ...

  8. [WC2011]最大XOR和路径(线性基)

    P4151 [WC2011]最大XOR和路径 题目描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如下( 1 表示真, 0 表 ...

  9. [python]pip坏了怎么办?

    今天,给一位新同事配置pip,用get-pip.py安装之后.出现错误: raise DistributionNotFound(req)  # XXX put more info here pkg_r ...

  10. .net core的安装

    安装完成后的路径在C:\Program Files\dotnet https://github.com/dotnet/cli/issues/390 ===2017年06月29日=== 安装成功之后,配 ...