四边形不等式

这里写图片描述


这道题
先思考简单情况,再将子问题转化为简单情况
在保证最优解可以构造出来的情况下弱化条件
的方法很值得借鉴。
但这里要讲其时间上的优化方法。


fij 表示到第j个点放置了i个邮局的最优解。若满足:
fi1,j1+fi2,j2<=fi1,j2+fi2,j1 i1<j1<i2<j2

每一个 fi,j 的从 fi,k 转移过来时,k随着i、j单调

若用 si,j 表示 fi,j 的值被 fi,si,j 更新,则有如下形式:
si1,j<=si,j<=si,j+1
在第二维枚举的时候,可以利用这个性质将复杂度从 O(n) 降到常数,整体复杂度从 O(n3) 降到 O(n2)

用打表验证每一个 fi,j 被转移的对象,观察单调性,就可以验证此题是否满足四边形不等式了。

for(i=1;i<=M;i++)
{
    s[i][N+1]=N;
    for(j=N;j>=i;j--)
    {
        for(k=s[i-1][j];k<=s[i][j+1];k++)
        {
            tmp=f[i-1][k]+dis[k+1][j];
            if(tmp<f[i][j])s[i][j]=k,f[i][j]=tmp;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值