简单四边形不等式优化dp(下)

2023-10-27

广义决策单调性

强烈推荐题解视频

f k , i f_{k,i} fk,i表示前 i i i个村庄放了 k k k个邮局的最小代价。

f k , i = min ⁡ j = 0 i { f k − 1 , j + w j + 1 , i } f_{k,i}=\overset{i}{\underset{j=0}\min}\{f_{k-1,j}+w_{j+1,i}\} fk,i=j=0mini{fk1,j+wj+1,i}
表示分配给村庄 [ j + 1 , i ] [j+1,i] [j+1,i]一个邮局。

f 0 , 0 = 0 f_{0,0}=0 f0,0=0,其他状态为正无穷。就是 O ( n 3 ) O(n^3) O(n3)

贡献函数 w i , j w_{i,j} wi,j表示给村庄 [ i , j ] [i,j] [i,j]分配一个邮局的最小贡献。
显然邮局放在区间下标中位数对应的村庄最优。如果有偶数个村庄放在两个中位数处都可以。
因为如果向着远离中位数的地方移动,那么减少的贡献少,而增加的贡献多。

w i , j = w i , j − 1 + a j − a ⌊ i + j 2 ⌋ w_{i,j}=w_{i,j-1}+a_j-a_{\left\lfloor \frac {i+j}2\right\rfloor} wi,j=wi,j1+aja2i+j
因为当区间长度由奇数向偶数转移时中位数不变,式子肯定成立。
而区间长度为偶数时可以认为邮局位于右边那个中位数处,中位数也可以认为不变。

打表打出决策单调性,于是可以 O ( n 2 ) O(n^2) O(n2)
f k , i = min ⁡ j = p k − 1 , i p k , i + 1 { f k − 1 , j + w j + 1 , i } f_{k,i}=\overset{p_{k,i+1}}{\underset{j=p_{k-1,i}}\min}\{f_{k-1,j}+w_{j+1,i}\} fk,i=j=pk1,iminpk,i+1{fk1,j+wj+1,i}

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=3e3;
int a[N+5];
int w[N+5][N+5];
int f[305][N+5],p[305][N+5];
int main() {
	int n,K;
	cin>>n>>K;
	for(int i=1; i<=n; i++) cin>>a[i];
	for(int i=1; i<=n; i++)
		for(int j=i; j<=n; j++)
			w[i][j]=w[i][j-1]+a[j]-a[i+j>>1];
	for(auto&i:f) for(auto&j:i) j=1e9;
	f[0][0]=0;
	for(int i=1;i<=K;i++) p[i][n+1]=n;注意最优决策点要有初值
	for(int k=1; k<=K; k++)
		for(int i=n; i; i--)因为在枚举i时用到的i+1的最优决策点,因此要倒序枚举
			for(int j=p[k-1][i]; j<=p[k][i+1]; j++)
//			for(int j=0; j<=i-1; j++)
				if(f[k][i]>f[k-1][j]+w[j+1][i])
					f[k][i]=f[k-1][j]+w[j+1][i],p[k][i]=j;
//				f[k][i]=min(f[k][i],f[k-1][j]+w[j+1][i]);
	cout<<f[K][n]<<endl;
//	for(int k=1;k<=K;k++,cout<<endl)
//		for(int i=1;i<=n;i++,cout<<' ')
//			cout<<p[k][i];
}

证明决策单调性还是老三样:

  1. 证明贡献函数满足四边形不等式:
    带入递推式 w i , j = w i , j − 1 + a j − a ⌊ i + j 2 ⌋ w_{i,j}=w_{i,j-1}+a_j-a_{\left\lfloor \frac {i+j}2\right\rfloor} wi,j=wi,j1+aja2i+j就会发现贡献函数显然满足四边形不等式:
    w i , j + w i + 1 , j + 1 ≤ w i , j + 1 + w i + 1 , j w_{i,j}+\textcolor{blue}{w_{i+1,j+1}}\leq \textcolor{red}{w_{i,j+1}}+w_{i+1,j} wi,j+wi+1,j+1wi,j+1+wi+1,j
    w i , j + w i + 1 , j + w i + 1 , j + a j + 1 − a ⌊ i + j − 2 2 ⌋ ≤ w i , j + a j + 1 − a ⌊ i + j − 1 2 ⌋ + w i + 1 , j w_{i,j}+\textcolor{blue}{w_{i+1,j}+w_{i+1,j}+a_{j+1}-a_{\left\lfloor{\frac{i+j-2}{2}}\right\rfloor}}\leq \textcolor{red}{w_{i,j}+a_{j+1}-a_{\left\lfloor{\frac{i+j-1}{2}}\right\rfloor}}+w_{i+1,j} wi,j+wi+1,j+wi+1,j+aj+1a2i+j2wi,j+aj+1a2i+j1+wi+1,j
  2. 证明状态函数满足四边形不等式:
    不需要归纳,直接设 p i , j + 1 = x , p i + 1 , j = y p_{i,j+1}=x,p_{i+1,j}=y pi,j+1=x,pi+1,j=y,我们讨论 x < y x<y x<y的情况:
    两个含有 f i , j , f i + 1 , j + 1 \color{blue}f_{i,j},f_{i+1,j+1} fi,j,fi+1,j+1的不等式:
    { f i , j ≤ f i − 1 , x + w x + 1 , j              f i + 1 , j + 1 ≤ f i , y + w y + 1 , j + 1 \left\{\begin{matrix} {\color{blue}{f_{i,j}}}\leq f_{i-1,x}+w_{x+1,j}\;\;\;\;\;\;\\ \textcolor{blue}{f_{i+1,j+1}}\leq f_{i,y}+w_{y+1,j+1} \end{matrix}\right. {fi,jfi1,x+wx+1,jfi+1,j+1fi,y+wy+1,j+1
    加起来: f i , j + f i + 1 , j + 1 ≤ f i − 1 , x + w x + 1 , j + f i , y + w y + 1 , j + 1 \textcolor{blue}{f_{i,j}+f_{i+1,j+1}}\leq f_{i-1,x}+w_{x+1,j}+f_{i,y}+w_{y+1,j+1} fi,j+fi+1,j+1fi1,x+wx+1,j+fi,y+wy+1,j+1
    再加上两个含有 f i , j + 1 , f i + 1 , j \color{red}f_{i,j+1},f_{i+1,j} fi,j+1,fi+1,j的等式
    { f i , j + 1 = f i − 1 , x + w x + 1 , j + 1 f i + 1 , j = f i , y + w y + 1 , j                \left\{\begin{matrix} {\color{red}f_{i,j+1}}=f_{i-1,x}+w_{x+1,j+1}\\ {\color{red}f_{i+1,j}}=f_{i,y}+w_{y+1,j}\;\;\;\;\;\;\; \end{matrix}\right. {fi,j+1=fi1,x+wx+1,j+1fi+1,j=fi,y+wy+1,j
    加到不等式的右边去:
    f i , j + f i + 1 , j + 1 + f i − 1 , x + w x + 1 , j + 1 + f i , y + w y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f i − 1 , x + w x + 1 , j + f i , y + w y + 1 , j + 1 \textcolor{blue}{f_{i,j}+f_{i+1,j+1}}+f_{i-1,x}+w_{x+1,j+1}+f_{i,y}+w_{y+1,j}\leq {\color{red}f_{i,j+1}}+{\color{red}f_{i+1,j}}+f_{i-1,x}+w_{x+1,j}+f_{i,y}+w_{y+1,j+1} fi,j+fi+1,j+1+fi1,x+wx+1,j+1+fi,y+wy+1,jfi,j+1+fi+1,j+fi1,x+wx+1,j+fi,y+wy+1,j+1
    f i , j + f i + 1 , j + 1 + w x + 1 , j + 1 + w y + 1 , j ≤ f i , j + 1 + f i + 1 , j + w x + 1 , j + w y + 1 , j + 1 \textcolor{blue}{f_{i,j}+f_{i+1,j+1}}+w_{x+1,j+1}+w_{y+1,j}\leq {\color{red}f_{i,j+1}}+{\color{red}f_{i+1,j}}+w_{x+1,j}+w_{y+1,j+1} fi,j+fi+1,j+1+wx+1,j+1+wy+1,jfi,j+1+fi+1,j+wx+1,j+wy+1,j+1
    对不等式左边用贡献函数的四边形不等式:
    f i , j + f i + 1 , j + 1 + w x + 1 , j + w y + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j + w x + 1 , j + w y + 1 , j + 1 {f_{i,j}+f_{i+1,j+1}}+w_{x+1,j}+w_{y+1,j+1}\leq {f_{i,j+1}}+{f_{i+1,j}}+w_{x+1,j}+w_{y+1,j+1} fi,j+fi+1,j+1+wx+1,j+wy+1,j+1fi,j+1+fi+1,j+wx+1,j+wy+1,j+1
    约掉了:
    f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j {f_{i,j}+f_{i+1,j+1}}\leq {f_{i,j+1}}+{f_{i+1,j}} fi,j+fi+1,j+1fi,j+1+fi+1,j
    证毕。(另一种情况同理)
  3. 证明决策单调性:
    打出表来会知道决策单调性是 p i − 1 , j ≤ p i , j ≤ p i , j + 1 p_{i-1,j}\leq p_{i,j}\leq p_{i,j+1} pi1,jpi,jpi,j+1
    接下来证明左边,假设不成立,设 p i , j = p , p i − 1 , j = k p_{i,j}=p,p_{i-1,j}=k pi,j=p,pi1,j=k,则: p < k p<k p<k
    先写出两个决策点在 f i − 1 , j f_{i-1,j} fi1,j意义下的最优性:
    A : f i − 1 , k ≤ f i − 1 , p A:f_{i-1,k}\leq f_{i-1,p} A:fi1,kfi1,p
    再写出我们期望它们在 f i , j f_{i,j} fi,j意义下的最优性:
    B : f i , k ≤ f i , p B:f_{i,k}\leq f_{i,p} B:fi,kfi,p
    A + T = B A+T=B A+T=B,用还原不等式的方法会发现, T T T恰为四边形不等式,则 B B B得证。
    因此 f i , k ≤ f i , p , f i , k ≥ f i , p f_{i,k}\leq f_{i,p},f_{i,k}\geq f_{i,p} fi,kfi,p,fi,kfi,p,则 f i , k = f i , p f_{i,k}=f_{i,p} fi,k=fi,p,说明 k k k p p p f i , j f_{i,j} fi,j意义上一样优。因此决策单调性得证。

二维四边形不等式优化dp

题解视频

首先考虑考虑设状态:
二叉搜索树的一个子树对应有序序列上一个连续的区间,因为中序遍历要递增。所以一眼区间dp。考虑到贡献与层数有关,我们需要把状态写进层数:
f k , i , j f_{k,i,j} fk,i,j表示目前区域根节点深度为 k k k,区间为 [ i , j ] [i,j] [i,j]的最小贡献。
这个dp很明显是 O ( n 4 ) O(n^4) O(n4)的,但是十秒钟…也可以过。

但是今天说的是四边形不等式优化dp。
我们首先考虑一下如何把状态优化为 O ( n 2 ) O(n^2) O(n2),一般来说牵扯到因为贡献计算而需要增加状态维数的问题,主要有三种计算费用的方法:

  1. 费用提前计算,例如任务安排
  2. 费用即时计算,也就是我们现在这种写法
  3. 费用推迟计算,主要的想法是从 i , j i,j i,j转移的贡献只与 i , j i,j i,j有关,与 k k k无关,那我们可以等到转移的时候从后继计算贡献。
    (不过好像这么简单的技巧应该不需要总结)

因此设 f i , j f_{i,j} fi,j表示区间 [ i , j ] [i,j] [i,j]构成了一颗子树,且假设根深度为 0 0 0时的贡献,则可以写出转移,转移就是枚举选择 k k k为根:
f i , j = min ⁡ k = i j { f i , k − 1 + f k + 1 , j + w k ( i , j ) } f_{i,j}=\overset{j}{\underset{k=i}\min}\{f_{i,k-1}+f_{k+1,j}+w_k(i,j)\} fi,j=k=iminj{fi,k1+fk+1,j+wk(i,j)}

设数字用 a a a表示, s s s表示 a a a的前缀和,则其中贡献函数 w k ( i , j ) = s j − s i − 1 + a k w_k(i,j)=s_j-s_{i-1}+a_k wk(i,j)=sjsi1+ak

时间复杂度 O ( n 3 ) O(n^3) O(n3),足够通过本题了,但是还可以做到更优。

打表打出决策单调性, p i , j − 1 ≤ p i , j ≤ p i + 1 , j p_{i,j-1}\leq p_{i,j}\leq p_{i+1,j} pi,j1pi,jpi+1,j,可以优化为 O ( n 2 ) O(n^2) O(n2)

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=250;
int f[N+5][N+5],p[N+5][N+5];
int a[N+5],s[N+5];
int main() {
	int n;
	for(int i=1;i<=N;i++) p[i][i]=i;
	while(cin>>n) {
		for(int i=1;i<=n;i++) (cin>>a[i]),s[i]=s[i-1]+a[i];
		for(int i=1;i<=n;i++)
			for(int j=i+1;j<=n;j++) f[i][j]=1e9;
		for(int len=2;len<=n;len++)
			for(int i=1,j;(j=i+len-1)<=n;i++) 
//				for(int k=i;k<=j;k++)
				for(int k=p[i][j-1];k<=p[i+1][j];k++)
					if(f[i][j]>f[i][k-1]+f[k+1][j]+s[j]-s[i-1]-a[k])
						f[i][j]=f[i][k-1]+f[k+1][j]+s[j]-s[i-1]-a[k],p[i][j]=k;
		cout<<f[1][n]<<endl;
//		for(int i=1;i<=n;i++,cout<<endl)
//			for(int j=1;j<=n;j++,cout<<' ')
//				cout<<p[i][j];
	}
}

因为贡献函数是一个三元函数,所以不知道怎么样满足四边形不等式,所以主要讲究一个倒推。

证明状态函数满足四边形不等式:
p i , j + 1 = x , p i + 1 , j = y p_{i,j+1}=x,p_{i+1,j}=y pi,j+1=x,pi+1,j=y,则:
{ f i , j ≤ f i , x − 1 + f x + 1 , j + w x ( i , j ) f i + 1 , j + 1 ≤ f i + 1 , y − 1 + f y + 1 , j + 1 + w y ( i + 1 , j + 1 ) f i , x − 1 + f x + 1 , j + 1 + w x ( i , j + 1 ) = f i , j + 1 f i + 1 , y − 1 + g y + 1 , j + w y ( i + 1 , j ) = f i + 1 , j \left\{\begin{matrix} f_{i,j}\leq f_{i,x-1}+f_{x+1,j}+w_x(i,j)\hspace{2.4cm}\\ f_{i+1,j+1}\leq f_{i+1,y-1}+f_{y+1,j+1}+w_y(i+1,j+1)\\ f_{i,x-1}+f_{x+1,j+1}+w_x(i,j+1)=f_{i,j+1}\hspace{1.2cm}\\ f_{i+1,y-1}+g_{y+1,j}+w_y(i+1,j)=f_{i+1,j}\hspace{1.25cm} \end{matrix}\right. fi,jfi,x1+fx+1,j+wx(i,j)fi+1,j+1fi+1,y1+fy+1,j+1+wy(i+1,j+1)fi,x1+fx+1,j+1+wx(i,j+1)=fi,j+1fi+1,y1+gy+1,j+wy(i+1,j)=fi+1,j
加起来:
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + g y + 1 , j + w x ( i , j + 1 ) + w y ( i + 1 , j ) ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 + w x ( i , j ) + w y ( i + 1 , j + 1 ) f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+g_{y+1,j}+\textcolor{blue}{w_x(i,j+1)+w_y(i+1,j)}\leq f_{i,j+1}+f_{i+1,j}+f_{x+1,j}+f_{y+1,j+1}+\textcolor{red}{w_x(i,j)+w_y(i+1,j+1)} fi,j+fi+1,j+1+fx+1,j+1+gy+1,j+wx(i,j+1)+wy(i+1,j)fi,j+1+fi+1,j+fx+1,j+fy+1,j+1+wx(i,j)+wy(i+1,j+1)
我们希望把贡献函数约掉,因此希望有这样一个不等式:
w x ( i , j ) + w y ( i + 1 , j + 1 ) ≤ w x ( i , j + 1 ) + w y ( i + 1 , j ) \textcolor{red}{w_x(i,j)+w_y(i+1,j+1)} \leq \textcolor{blue}{w_x(i,j+1)+w_y(i+1,j)} wx(i,j)+wy(i+1,j+1)wx(i,j+1)+wy(i+1,j)
这恰为贡献函数的四边形不等式,带入贡献函数的公式会发现显然成立。
剩下的部分就和石子合并的证明一样了,因此状态函数显然满足四边形不等式。

同理,证明决策单调性的部分也和石子合并一模一样,不写了。

所以我们会发现,同一类转移方程能否四边形不等式优化仅仅和 w w w是否满足四边形不等式相关。

后记

于是皆大欢喜。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单四边形不等式优化dp(下) 的相关文章

  • 练习一、用JS语言计算两点之间距离功能

    功能描述 在界面建立4个数字输入框分别代表两点的横坐标 纵坐标 点击按钮并计算出相应的距离 主要考点 熟悉math对象中开根号math sqrt 数值 与平方math pow 数值 次幂 框架 elementui 相关代码
  • Netty学习——整体架构

    Netty 整体结构 Netty 是一个设计非常用心的网络基础组件 Netty 官网给出了有关 Netty 的整体功能模块结构 却没有其他更多的解释 从图中 我们可以清晰地看出 Netty 结构一共分为三个模块 Core 核心层 Core
  • Coverity介绍以及典型缺陷说明

    Coverity概述 Coverity公司是由一流的斯坦福大学的科学家于2002年成立的 产品核心技术是1998年至2002年在斯坦福大学计算机系统实验室开发的 用于解决一个计算机科学领域最困难的问题 在2003年发布了第一个能够帮助Lin
  • 一元多项式相加可实现代码数据结构(C语言)

    一元多项式相加可实现代码 c语言 数据结构 C语言版 书上是伪代码 经过不断修改调试 写下可实现的C语言源代码 创建文件 分为两部分 头文件 Poly h 和源文件 Poly c 一 实验目的 1 了解一元多项式的表示 2 实现一元多项式的

随机推荐

  • python使用influxdb-client管理InfluxDB的bucket

    bucket的概念类似数据库的 库 同时每个库中的数据都因为存在 时间戳 每个数据都会有一个对应的时间点 influxdb client python官方github页面 https github com influxdata influx
  • termux基本使用教程[通俗易懂]

    初始化 下载并初始化termux 安装vim 安装编辑器vim pkg install vim 解决中文乱码问题 在home目录下 新建 vimrc文件 vim vimrc 添加内容如下 set fileencodings utf 8 gb
  • 华为机试题67-24点游戏算法

    描述 给出4个1 10的数字 通过加减乘除运算 得到数字为24就算胜利 除法指实数除法运算 运算符仅允许出现在两个数字之间 本题对数字选取顺序无要求 但每个数字仅允许使用一次 且需考虑括号运算 此题允许数字重复 如3 3 4 4为合法输入
  • flex实现简单计算机程序,Macromedia Flex 制作计算器源码和制作步骤

    这个计算器是由两个部分组成 一个前台界面的MXML文件 一个后台控制器的AS文件 mxml文件负责显示计算器的界面 as文件负责处理用户发送的信息并计算结果 在这个教程中我们主要学习 list The Application class T
  • 音乐小程序项目

    目录 一 开放前的准备 1 项目展示 2 项目分析 1 音乐小程序项目页面结构图 2 音乐小程序项目目录结构 3 音乐小程序项目目录结构 3 项目初始化 二 标签页切换 1 任务分析 2 前导知识 1 swiper组件编写滑动页面结构 2
  • 字符检测:C语言ispunct()函数--判断字符是否为标点符号或特殊字符

    ispunct 函数用来检测一个字符是否为标点符号或特殊字符 其原型为 int ispunct int c 参数 c 为需要检测的字符 返回值 若 c 为标点符号或特殊符号 非空格 非数字和非英文字母 返回非 0 值 否则返回 0 注意 此
  • 第二次 的面试题目 (自闭!!)

    1 qt 调试时遇见过的报错信息 1 遇到过 最常见的是 没有加头文件 2 未定义错误 2 在linux上使用过gdb吗 怎么使用 什么是GDB 能干啥 gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具 一般来说 GDB主要
  • 云函数(go)部署-腾讯云

    目录 1 云函数入口 2 上传本地函数代码 2 1 进入创建云函数 2 2 定义函数名称 选择运行环境 2 3 上传本地云函数 2 3 配置高级属性 可选填 2 4 点击完成 云函数代码没有问题 则可正常部署 2 5 函数管理 重新上传部署
  • Antv L7 + mapbox 实现简单地图场景

    实现场景 1 创建地图场景 2 自定义marker样式 3 mapbox 实现3D地图 代码实现 1 创建地图场景 div div
  • postman接口测试工具,实现Jmeter+Ant+Jenkins持续集成

    一 中小型公司 中小型项目 jmeter Ant Git jmx Jenkins持续集成 Postman Newman Git Jenkins持续集成 大中型公司 接口自动化框架 接口自动化平台 二 Jmeter常用组件 执行顺序 测试计划
  • 微信小程序支付完整流程(前端)

    微信小程序中 常见付款给商家的场景 下面列出企业小程序中 从0起步完整微信支付流程 一 注册微信支付商户号 由上级或法人注册 接入微信支付 微信商户平台 此商户号 需要由主管及更上级领导进行注册 会成为公司收款账户 不是由前端程序员注册 不
  • XSS和CSRF攻击

    一 XSS攻击 跨脚本攻击 是一种普遍的Web应用安全漏洞 这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中 当正常用户访问该页面时 则可导致嵌入的恶意脚本代码的执行 从而达到恶意攻击用户的目的 本质是 网站没有对恶意代码进
  • C++ 常量

    常量是固定值 在程序执行期间不会改变 这些固定的值 又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 常量就像是常规的变量 只不过常量的值在定义后不能进行修改 整数常量 整数常量可以是十进制 八进制
  • 企业微信cgi-bin/gateway/agentinfo接口存在未授权访问漏洞 附POC

    文章目录 企业微信cgi bin gateway agentinfo接口存在未授权访问漏洞 附POC 1 企业微信cgi bin gateway agentinfo接口简介 2 漏洞描述 3 影响版本 4 fofa查询语句 5 漏洞复现 6
  • GNU汇编程序中的分段(.section伪操作)

    GNU汇编程序中的分段 lt 1 gt section伪操作 section Starts a new code or data section Sections in GNU are called text a code section
  • JQ插件OrgChart实现组织结构图

    最近在做一个OA系统的组织结构图 需求如下 第一眼看起来让人联想到脑图 思维导图大家都比较熟悉 但这不是脑图 是组织结构图 有添加 编辑 删除等功能 随后我就找了一些插件 1 jsMind 脑图 查看文档 jsMind目前有左右伸展的 没有
  • docker镜像和仓库

    文章目录 一 docker镜像 1 镜像的分层结构 1 分层结构案例 2 容器层详解 2 镜像的构建 1 创建一个Dockerfile 2 构建镜像 3 查看镜像的分层结构 4 镜像的缓存特性 3 Dockerfile基本语法 1 dock
  • mysql 5.7安装详细步骤(图片+文字,图片为主)【软件安装+环境配置】

    首先双击软件开始安装 加载完成出现这个页面 选择Custom gt next 找到并选择x64位的 点击绿色箭头 选中 gt 更改安装位置 我安装的是T盘 你们可以安装在D盘 E盘等等 不建议C盘 C盘崩了数据就损坏 Mysql gt ne
  • 调用阿里云语音合成Python版SDK

    一 阿里云介绍 阿里云创立于2009年 是全球领先的云计算及人工智能科技公司 致力于以在线公共服务的方式 提供安全 可靠的计算和数据处理能力 让计算和人工智能成为普惠科技 阿里云服务着制造 金融 政务 交通 医疗 电信 能源等众多领域的领军
  • 简单四边形不等式优化dp(下)

    广义决策单调性 强烈推荐题解视频 设 f k i f k i fk i 表示前