分析

简单区间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. Mysql drop function xxxx ERROR 1305 (42000): FUNCTION (UDF) xxxx does not exist

    mysql> drop function GetEmployeeInformationByID;ERROR 1305 (42000): FUNCTION (UDF) GetEmployeeInf ...

  2. JMeter压测分布式部署

    监控JMeter压力机的性能

  3. C#复习笔记(5)--C#5:简化的异步编程(异步编程的基础知识)

    异步编程的基础知识 C#5推出的async和await关键字使异步编程从表面上来说变得简单了许多,我们只需要了解不多的知识就可以编写出有效的异步代码. 在介绍async和await之前,先介绍一些基础 ...

  4. 2 JAVA 项目名称前红色叹号如何解决

    1 Java 项目前出现红色叹号Eclipse找不到项目需要的JAR包,可以在这里面解决: ① 右键点击项目,选择[Build Path].[Configure Build Path...] ② 在这 ...

  5. 【学亮IT手记】jQuery callback方法实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  6. springmvc配置文件

    1 springMVC的配置文件路径问题 https://www.cnblogs.com/ysloong/p/6071450.html

  7. Hbase存储流程

  8. java float double bigdecimal

    java 有 float,double,BigDecimal 三种,前两者会损失精度,最后一个是专门用于高精度计算的大数类型,但是会损失性能.如果用于金融场合且小数位并不多的时候,可以考虑 BigDe ...

  9. Java 基础类型 默认值

    (1)数据库里的列,如果有默认值,不能赋值有业务含义的值. (2)int 默认值 java会分配默认值的额.

  10. Yii2写日志总结

    方法一 批量文件配置写入日志: 1. 首先在config.php配置文件中配置log模块 如下: 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, ...