《算法竞赛进阶指南》0x5B四边形不等式 利用四边形不等式优化石子合并问题

摘要:
#包括<使用namespacestd;intn;intmain(){cin>n;intx;=n;i++){cin>x;sizeopp);i<p[i][i]=i;对于(intlen=2;len<=n)=p[i+1][j];k++){if(f[i][j]>}}cout<f[1][n]<

经典的石子合并问题,代价w(i,j)满足四边形不等式的性质,所以可以通过决策的单调性求解

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 500;
int f[N][N];
int p[N][N];
int n;
int sum[N];
int main(){
    cin>>n;
    int x;
    for(int i=1;i<=n;i++){
        cin>>x;
        sum[i]=sum[i-1]+x;
    }
    
    memset(f,0x3f,sizeof f);
    memset(p,0,sizeof p);
    for(int i=1;i<=n;i++)f[i][i]=0,p[i][i]=i;
    
    for(int len=2;len<=n;len++)
        for(int i=1;i+len-1<=n;i++)
        {
            int j=i+len-1;
            for(int k=p[i][j-1];k<=p[i+1][j];k++){
                if(f[i][j]>f[i][k]+f[k+1][j]+sum[j]-sum[i-1]){
                    f[i][j]=f[i][k]+f[k+1][j]+sum[j]-sum[i-1];
                    p[i][j]=k;
                }
            }
        }
        
    cout<<f[1][n]<<endl;
}

免责声明:文章转载自《《算法竞赛进阶指南》0x5B四边形不等式 利用四边形不等式优化石子合并问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇win10快捷键大全 win10常用快捷键Kubernetes进阶实战读书笔记:持久化存储卷(pv和pvc生命周期)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows 下VLC播放器应用之二LIBVLC API解析

API libvlc_instance_t* libvlc_new(int  argc,  const char* const*  argv)    libvlc_instance_t* libvlc_new(int argc, const char* const* argv) 创建并初始化一个LIBVLC实例 这个函数接受一个命令行参数列表,这...

ffmpeg文档22-混合器(复用器)

看这篇文章你需要对ffmpeg已经有一定的使用经验,知道如何read帧,解帧,或者write等。 ffmpeg内部使用跑结构体表函数指针的方式,实现了类似C++的多态性,,我们来简析一下。 【注册表】 我们使用ffmpeg,首先要执行av_register_all,这个玩意儿把全局的解码器、编码器等结构体注册到一些全局的对象表里,以便后面跑表调...

CSS 单行 多行文本溢出显示省略号

单行文本 overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行文本溢出显示省略号: <style type="text/css" media="screen"> p { 300px; height: 72px; line-hei...

EF Core 难道不支持GroupBy吗?

   最近在修改一个.NET Core的项目,其中ORM用的EF Core,在一次查询分页中,遇到了一个很奇怪的问题,每次查询都很慢,明明已经按照某个编号字段Group By并且还做了分页,为啥查询还这么的慢呢? 首选我想当的解决方案就是为 每个条件查询字段添加索引,但是依然无效,还是很慢;然后查看log日志,仔细核对EF生成的sql,发现了生成的sql根...

python操作cad

from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。 # 如果此時還沒有打開cad,將會創建一個新的dwg文件,並自動開啓cad軟件 acad = Autocad(create_if_n...

Qt笔记——绘图(QBitmap,QPixmap,QImage,QPicture)

QPainter绘图 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状态改变 绘图设备(QPixmap,QImage,QBitmap,QPicture) QPixmap图片背景透明,针对屏幕进行优化了,和平台相关,不能对图片进行修改 QImage 和平台无关,可以对图片进行修改,在线程中绘图...