题目传送门(内部题99)


输入格式

  第一行一个整数$n$,第二行$n$个整数$x_1\sim x_n$。


输出格式

  一行一个整数表示答案。


样例

样例输入:

5
8 2 1 4 3

样例输出:

35


数据范围与提示

样例解释:

数据范围:

  对于$10\%$的数据,$n\leqslant 10$。
  对于$40\%$的数据,$n\leqslant 300$。
  对于$70\%$的数据,$n\leqslant 2,000$。
  对于$100\%$的数据,$n\leqslant 5,000,1\leqslant x_i\leqslant 10^9$。

提示:

  二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。


题解

因为满足二叉搜索树的性质,所以一棵子树里的点一定是连续的。

考虑$DP$,不妨一步一步来考虑,设$dp[x][l][r]$表示区间$[l,r]$的跟节点深度为$x$的最小代价。

转移很简单,无非就是枚举$[l,r]$中哪个点做跟节点即可,时间复杂度是$\Theta(n^4)$的。

(考虑一个小优化:因为深度其实远远达不到$n$,也就是$\log n$多一点,所以直接扫到$10$左右就能拿到$40$分啦~)

考虑优化,发现深度每增加$1$,也就相当于又加了一个$\sum \limits_{i=l}^r x_i$,用前缀和优化就有了$\Theta(n^3)$的做法了。

接着优化,考虑贪心,因为决策点一定是单调的,做个解释,假设现在要处理区间$[l,r]$,在处理它之前我们已经处理出来了$[l,r-1]$和$[l+1,r]$,并且知道了它们的最优决策点,那么$[l,r]$的最优决策点一定在$[l,r-1]$和$[l+1,r]$的最优决策点之间。

时间复杂度:$\Theta(n^2)$(均摊)。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
long long v[5001],s[5001];
pair<long long,int> dp[5001][5001];
int main()
{
memset(dp,0x3f,sizeof(dp));
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld",&v[i]);
s[i]=s[i-1]+v[i];
dp[i][i]=make_pair(v[i],i);
}
for(int i=2;i<=n;i++)
{
for(int l=1;l<=n-i+1;l++)
{
int r=l+i-1;
for(int mid=dp[l][r-1].second;mid<=dp[l+1][r].second;mid++)
{
long long res=s[r]-s[l-1];
if(l<=mid-1)res+=dp[l][mid-1].first;
if(mid+1<=r)res+=dp[mid+1][r].first;
if(res<dp[l][r].first)dp[l][r]=make_pair(res,mid);
}
}
}
printf("%lld",dp[1][n]);
return 0;
}

rp++

[CSP-S模拟测试]:二叉搜索树(DP+贪心)的更多相关文章

  1. [LeetCode]96. 不同的二叉搜索树(DP,卡特兰数)

    题目 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ ...

  2. 「面试高频」二叉搜索树&双指针&贪心 算法题指北

    本文将覆盖 「字符串处理」 + 「动态规划」 方面的面试算法题,文中我将给出: 面试中的题目 解题的思路 特定问题的技巧和注意事项 考察的知识点及其概念 详细的代码和解析 开始之前,我们先看下会有哪些 ...

  3. LeetCode 96 - 不同的二叉搜索树 - [DP]

    假定 $f[n]$ 表示有 $n$ 个节点的二叉树,有多少种不同结构. 因此 $f[n] = \sum_{i=0}^{n-1} (f[i] \times f[n-1-i])$,选一个节点作为根节点,那 ...

  4. csps模拟93序列,二叉搜索树,走路题解

    题面: 模拟93考得并不理想,二维偏序没看出来,然而看出来了也不会打 序列: 对a,b数列求前缀和,那么题意转化为了满足$suma[i]>=suma[j]$且$sumb[i]>=sumb[ ...

  5. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历   二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则 ...

  6. hihocoder #1616 : 是二叉搜索树吗?(模拟题)

    题目链接:http://hihocoder.com/problemset/problem/1616 题解:就是简单的模拟一下至于如何判断是不是二叉搜索树可以通过中序遍历将每个点存下来看是不是递增的如果 ...

  7. 二叉搜索树 [四边形不等式优化区间dp]

    二叉搜索树 [四边形不等式优化区间dp] 题目描述 有 \(n\) 个结点,第 \(i\) 个结点的权值为 \(i\) . 你需要对它们进行一些操作并维护一些信息,因此,你需要对它们建立一棵二叉搜索树 ...

  8. 【非原创】codeforces 1025D - Recovering BST【区间dp+二叉搜索树】

    题目:戳这里 题意:给一个不下降序列,有n个数.问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件.主要得了解二叉搜索树的性质, ...

  9. 二叉搜索树TREE(线段树,区间DP)

    前言 线段树+区间DP题,线段树却不是优化DP的,是不是很意外? 题面 二叉搜索树是一种二叉树,每个节点都有一个权值,并且一个点的权值比其左子树里的点权值都大,比起右子树里的点权值都小. 一种朴素的向 ...

随机推荐

  1. window.setInterval

    window.clearInterval与window.setInterval的用法 window.setInterval() 功能:按照指定的周期(以毫秒计)来调用函数或计算表达式. 语法:setI ...

  2. C#面向对象16 访问修饰符

    C# 访问修饰符 public:公开的公共的 private:私有的,只能在内部类中访问 protected:受保护的,子类可以访问和类的内部 internal:只能在当前项目/程序集中访问.在同一项 ...

  3. ModbusRtu通信报文详解【二】

    这里接着上一篇内容对ModbusRtu的通信报文做个详细描述: [1]强制单个线圈 功能码:05H [2]预置单个寄存器 功能码:06H [3]强制多个线圈 功能码;0FH [4]预置多个寄存器 功能 ...

  4. Typora入门:全网最全教程

    目录 简介 Markdown介绍 常用快捷键 块元素 换行符 标题级别 引用文字 无序列表 有序列表 任务列表 代码块 数学表达式 插入表格 脚注 分割线 目录(TOC) 跨度元素 链接 网址 图片 ...

  5. cube打包后css顺序错误

    先说下解决办法: 把import {...} from cube-ui放在 import App from './App.vue'的前面 不然会产生如下错误 正确的顺序

  6. centos7andcentos6初始化脚本

    #!/bin/bash # get OS verison RELEASEVER=$(rpm -q --qf "%{Version}" $(rpm -q --whatprovides ...

  7. Spring Boot WebFlux整合mongoDB

    引入maven文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  8. 第十章· MySQL的主从复制

    一.主从复制简介  2015年5月28日11时,12小时后恢复,损失:平均每小时106.48W$ 1)高可用 2)辅助备份 3)分担负载 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复 ...

  9. Java_Eclipse_Android安装

    转自——链接:https://www.cnblogs.com/summary-2017/p/8073225.html

  10. BLE 5协议栈-逻辑链路控制与适配协议层(L2CAP)

    文章转载自:http://www.sunyouqun.com/2017/04/page/2/ 逻辑链路控制与适配协议通常简称为L2CAP(Logical Link Control and Adapta ...