分析

简单区间DP,
定义状态f[i][j][0/1]为取完i-j的小球最后取i/j上的小球所能获得的最大价值。
排序转移。

ac代码

#include <bits/stdc++.h>
#define N 1005
using namespace std;
template <typename T>
inline void read(T &x) {
    x = 0; T fl = 1; char ch = 0;
    for (; ch < '0' || ch > '9'; ch = getchar())
        if (ch == '-') fl = -1;
    for (; ch >= '0' && ch <= '9'; ch = getchar())
        x = (x << 1) + (x << 3) + (ch ^ 48);
    x *= fl;
}
struct node {
    int x, y, val;
}a[N];
int f[N][N][2], sum[N];
int n, x0;
bool cmp(const node &a, const node &b) {
    return a.x == b.x? a.y < b.y: a.x < b.x;
}
int main() {
    read(n); read(x0);
    for (int i = 1; i <= n; i ++) read(a[i].x);
    for (int i = 1; i <= n; i ++) read(a[i].y);
    for (int i = 1; i <= n; i ++) read(a[i].val);
    sort(a + 1, a + 1 + n, cmp);
    for (int i = 1; i <= n; i ++) sum[i] = sum[i - 1] + a[i].val;
    for (int i = 1; i <= n; i ++)
        f[i][i][0] = f[i][i][1] = a[i].y - abs(a[i].x - x0) * sum[n];
    for (int i = 2; i <= n; i ++) {
        for (int j = 1; j <= n - i + 1; j ++) {
            int k = j + i - 1;
            f[j][k][0] = max(f[j + 1][k][1] + a[j].y - (sum[n] - sum[k] + sum[j]) * abs(a[k].x - a[j].x), f[j + 1][k][0] + a[j].y - (sum[n] - sum[k] + sum[j]) * abs(a[j + 1].x - a[j].x));
            f[j][k][1] = max(f[j][k - 1][0] + a[k].y - (sum[n] - sum[k - 1] + sum[j - 1]) * abs(a[k].x - a[j].x), f[j][k - 1][1] + a[k].y - (sum[n] - sum[k - 1] + sum[j - 1]) * abs(a[k].x - a[k - 1].x));
        }
    }
    printf("%.3lf\n", 1.0 * max(f[1][n][1], f[1][n][0]) / 1000.0);
    return 0;
}

[luogu2446][bzoj2037][SDOI2008]Sue的小球【区间DP】的更多相关文章

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

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

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

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

  3. BZOJ2037: [Sdoi2008]Sue的小球

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

  4. 2037: [Sdoi2008]Sue的小球

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

  5. 【BZOJ2037】Sue的小球(动态规划)

    [BZOJ2037]Sue的小球(动态规划) 题面 BZOJ 题解 莫名想到这道题目 很明显是一样的 设\(f[i][j][0/1]\)表示已经接到了\(i-j\)这一段的小球 当前在\(i\)或者在 ...

  6. [SDOI2008]Sue的小球

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

  7. Luogu[SDOI2008]Sue的小球

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

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

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

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

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

随机推荐

  1. Java参数是值传递还是引用传递?

    先来看看参数是如何传递的. 一.参数的传递 1.基本类型的参数传递 public static void main(String[] args) { int a = 1; fun(a); } priv ...

  2. vscode开发中绝对让你惊艳的插件!!!(个人在用)

    识别模版引擎 1.Apache Velocity :识别Velocity(vm) 2.Art Template Helper:识别artTemplate 点击路径跳转 1.Laravel goto v ...

  3. oracle建表流程

    --创建表空间test1 create tablespace test1 datafile 'd:\test1.dbf' size 100m autoextend on next 10m --创建用户 ...

  4. C# Note11:如何优雅地退出WPF应用程序

    前言 I should know how I am supposed to exit my application when the user clicks on the Exit menu item ...

  5. 转《service worker在移动端H5项目的应用》

    1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...

  6. IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别(百度)

    如果面试问到IO操作,这篇文章提到的问题,基本是必问,百度的面试官问我三个问题 (1)什么是NIO(Non-blocked IO),AIO,BIO (2) java IO 与 NIO(New IO)的 ...

  7. 关于wordpress更新提示无法创建目录问题

    说说自己的看法和解决办法 看法: 网上很多人说:是权限问题,那么将文件目录权限设置为777就可以解决.恩,没错,是可以解决更新问题,可是却带来了更大的问题——安全.像他们这个设置后,网站被攻破,数据被 ...

  8. vscode git设置远程仓库码云

    https://www.cnblogs.com/klsw/p/9080041.html

  9. H5(仅仅是个地址)

    http://www.w3school.com.cn/html5/html_5_intro.asp (▼ヘ▼#)   怕你不看,我特地给你记个地址,应该不能再故意不看了吧   (▼ヘ▼#)

  10. c++ string替换指定字符串

    string fnd = "dataset"; string rep = "labels"; string buf = "d:/data/datase ...