#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct data
{
int x,y,v;
}a[];
int f[][][],n,x0,b[],sum[],tot;
bool cmp(data a1,data a2)
{
return a1.x<a2.x;
}
int main()
{
scanf("%d%d",&n,&x0);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i].x);
a[i].x-=x0;
}
for(int i=;i<=n;i++)
{
scanf("%d",&a[i].y);
tot+=a[i].y;
}
for(int i=;i<=n;i++)
scanf("%d",&a[i].v);
sort(a,a+n+,cmp);
for(int i=;i<=n;i++)
b[i]=a[i].x;
x0=lower_bound(b,b+n+,)-b;
for(int i=x0-;i>=;i--)
sum[i]=sum[i+]+a[i].v;
for(int i=x0+;i<=n;i++)
sum[i]=sum[i-]+a[i].v;
for(int i=x0+;i<=n;i++)
{
f[x0][i][]=f[x0][i-][]+(sum[n]+sum[]-sum[i-])*abs(a[i].x-a[i-].x);
f[x0][i][]=f[x0][i][]+(sum[n]+sum[]-sum[i])*abs(a[i].x);
}
for(int i=x0-;i>=;i--)
{
f[i][x0][]=f[i+][x0][]+(sum[n]+sum[]-sum[i+])*abs(a[i].x-a[i+].x);
f[i][x0][]=f[i][x0][]+(sum[n]+sum[]-sum[i])*abs(a[i].x);
}
for(int i=x0-;i>=;i--)
for(int j=x0+;j<=n;j++)
{
f[i][j][]=f[i+][j][]+(sum[]-sum[i+]+sum[n]-sum[j])*abs(a[i].x-a[i+].x);
f[i][j][]=min(f[i][j][],f[i+][j][]+(sum[]-sum[i+]+sum[n]-sum[j])*abs(a[i].x-a[j].x));
f[i][j][]=f[i][j-][]+(sum[]-sum[i]+sum[n]-sum[j-])*abs(a[j].x-a[j-].x);
f[i][j][]=min(f[i][j][],f[i][j-][]+(sum[]-sum[i]+sum[n]-sum[j-])*abs(a[j].x-a[i].x));
}
int x0=min(f[][n][],f[][n][]);
printf("%.3lf\n",(tot-x0)*0.001);
return ;
}

很像以前在codevs上做的关路灯那个题,区间型DP,可知他不可能越过一盏灯去关另一盏。所以从起点开始,依次向两边扩展,f[i][j][0]表示关完区间[i,j]停在左边,[1]表示停在右边。

f[i][j][0]即可从f[i+1][j][0]转移来,又可从f[i+1][j][1]转移来。

bzoj 2037: [Sdoi2008]Sue的小球的更多相关文章

  1. bzoj 2037: [Sdoi2008]Sue的小球——dp

    Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩 ...

  2. 2037: [Sdoi2008]Sue的小球

    2037: [Sdoi2008]Sue的小球 链接 题解 论文 代码 #include<cstdio> #include<algorithm> #include<cstr ...

  3. 【BZOJ2037】[Sdoi2008]Sue的小球 区间DP+费用提前

    [BZOJ2037][Sdoi2008]Sue的小球 Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而 ...

  4. BZOJ2037: [Sdoi2008]Sue的小球

    Description Sue 和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海 盗,而是要收集空中漂浮 ...

  5. [SDOI2008]Sue的小球

    题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一 ...

  6. [luogu2446][bzoj2037][SDOI2008]Sue的小球【区间DP】

    分析 简单区间DP, 定义状态f[i][j][0/1]为取完i-j的小球最后取i/j上的小球所能获得的最大价值. 排序转移. ac代码 #include <bits/stdc++.h> # ...

  7. BZOJ2037: [Sdoi2008]Sue的小球(区间DP)

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 869  Solved: 483[Submit][Status][Discuss] Description ...

  8. Luogu[SDOI2008]Sue的小球

    题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一 ...

  9. 【简●解】[SDOI2008] Sue的小球

    [简●解][SDOI2008] Sue的小球 计划着刷\(DP\)题结果碰到了这样一道论文题,幸好不是太难. [题目大意] 口水话有点多,所以就直接放链接.传送门 [分析] 看到题首先联想到了曾经做过 ...

随机推荐

  1. js输出26个字母两种方法(js fromCharCode的使用)

    方法一 var character = new Array("A","B","C","D","E", ...

  2. (四)linux常用命令

    1.在vim下要查找特定的字符串可按Esc键,然后按/字符串,如/DFGE 2.在vim下要显示行数:set nu

  3. 【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别

    转载请注明出处: http://blog.csdn.net/zhaokaiqiang1992 FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配 ...

  4. iOS 开发之照片框架详解(1)

    http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备 ...

  5. synchronized与static synchronized 的区别

    synchronized是对类的当前实例加锁,防止其他线程同时访问该类的该实例的synchronized块,这里的概念是“类的当前实例”,而static synchronized是对类的所有实例加锁, ...

  6. Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)

    In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...

  7. VB6 GDI+ 入门教程[1] GDI+介绍

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...

  8. 配置NGReport 报告中文

    1. 测试报告的名称 在测试开始或测试监听器的类中加上下面一句代码即可: System.setProperty("org.uncommons.reportng.title", &q ...

  9. struts2配置的ajax参数传递方法

    在action.java ,struts.xml,js代码文件中,需要约定配置相同的参数名字,否则获取不了. 如下图.

  10. Android Snackbar

    使用Snackbar我们可以在屏幕底部(大多时候)快速弹出消息,它和Toast非常相似,但是它更灵活一些. 当它显示一段时间后或用户与屏幕交互时它会自动消失. 可以自定义action-可选操作. sw ...