首页 > 其他分享 >分治优化DP

分治优化DP

时间:2025-01-21 16:55:52浏览次数:1  
标签:opt ch cm int text 分治 hspace 优化 DP

分治优化DP

Link

\(\text{Para.1} \hspace{0.2cm}\)四边形不等式

对于形如 \(\text{dp}[i][j] = \min_{k<j}{\text{dp}[i-1][k] + \text{cost}[k+1][j]}\) 的形式,若 \(\text{cost}\) 满足 \(\text{cost}[a][c] + \text{cost}[b][d] \leq \text{cost}[a][d] + \text{cost}[b][c] (a\leq b\leq c \leq d)\) ,则 \(\text{dp}\) 满足上述不等式。

\(\text{Para.2}\hspace{0.2cm}\) 分治的引入

因为具有四边形不等式,所以就有决策单调性:\(\text{opt}[i][1] \leq \text{opt}[i][2] \leq ... \leq \text{opt}[i][j]\)。
那么如果我们每一次将中点的最优决策点计算出来,那么我们就可以将计算的规模减半。实现分治的功能。

\(\text{Para.3} \hspace{0.2cm}\) 基础代码

以 Ciel and Gondolas 为例:

#include <bits/stdc++.h>
#define FASTIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 4005;
const int M = 805;
int dp[M][N], n, k;
int sum[N][N], a[N][N];
int read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = (x << 3) + (x << 1) + ch - '0';
        ch = getchar();
    }
    return x * f;
}
int cost(int i, int j) { return sum[j][j] - sum[i - 1][j] - sum[j][i - 1] + sum[i - 1][i - 1]; }
void DIV(int d, int l, int r, int optl, int optr) {
    if (l > r)
        return;
    int mid = (l + r) / 2;
    int cur = INT_MAX, opt;
    for (int k = optl; k <= optr; ++k) {
        int cst = dp[d - 1][k - 1] + cost(k, mid);
        if (cst < cur)
            cur = cst, opt = k;
    }
    dp[d][mid] = cur;
    DIV(d, l, mid - 1, optl, opt);
    DIV(d, mid + 1, r, opt, optr);
}
int main() {
	n = read(), k = read();
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= n; ++j) {
        	a[i][j] = read();
            sum[i][j] = a[i][j] + sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
        }
    memset(dp, 0x3f, sizeof dp);
    dp[0][0] = 0;
    for (int i = 1; i <= k; ++i) DIV(i, 1, n, 1, n);
    cout << dp[k][n] / 2 << '\n';
    return 0;
}

\(\text{Para.4} \hspace{0.2cm}\) 例题

1.Circular Barn

枚举第一个们开在哪,破环为链。

2.Guards

板子。

3.The Bakery

较难想,用莫队维护 \(\text{cost}\) 。

4.Lannister Army

板子。

标签:opt,ch,cm,int,text,分治,hspace,优化,DP
From: https://www.cnblogs.com/Tom-tanjiaqi/p/18683814

相关文章

  • 【计算机网络】传输层协议TCP与UDP
    传输层    传输层位于OSI七层网络模型的第四层,主要负责端到端通信,可靠性保障(TCP),流量控制(TCP),拥塞控制(TCP),数据分段与分组,多路复用与解复用等,通过TCP与UDP协议实现。端到端通信    传输层通过端口号(Port)来区分不同进程。端口号为16位数字(0-65535),用于标......
  • CDQ 分治 && 整体二分
    CDQ分治主要用于解决偏序问题。在偏序问题中,以三维偏序居多。它是一种离线算法。其实严格来说,它是一种思想而不是算法。它依赖于归并排序。CDQ分治也可以用于1D/1D动态规划的转移,不过目前暂不涉及。偏序问题什么是偏序?先从一维偏序说起。一维偏序给定\(n\)个点,每个点......
  • Github开源项目源码阅读(progschjThreadPool)
    项目地址:https://github.com/progschj/ThreadPool项目源码:#ifndefTHREAD_POOL_H#defineTHREAD_POOL_Hinclude<vector>include<queue>include<memory>include<thread>include<mutex>include<condition_variable>include<f......
  • BFS及其优化
    BFS及其优化BFS可实现问题:[连通块](DFS也行)[最短路](DFS又行)[曼哈顿距离](DFS好像大概也许行)大概步骤:1.起点入队列,打标记。2.弹出队首进行操作。3.按照题目要求加入队列新点并打标记。例题:1.accoders【一本通提高篇广搜的优化技巧】山峰和山谷2065思路......
  • 使用scorecardpy库计算woe分箱和iv值
    woe分箱_iv值计算基于scorecardpy库,乳腺癌数据集importpandasaspdimportnumpyasnpfromsklearn.datasetsimportload_breast_cancerimportscorecardpyasscfromtqdmimportnotebookcancer=load_breast_cancer()df=pd.DataFrame(cancer.data,column......
  • 【性能优化】gzip 压缩
    gzip压缩常见的压缩技术包括gzip、Brotli(br)和Zstandard(zstd)。gzip兼容性最好,后文讲的都是gzip压缩。gzip是一种基于LZ77算法的通用数据压缩算法。它通过查找重复的字符串模式来减少数据冗余,从而实现压缩。1理解网络传输数值在浏览器控制台的Network面板中,当你......
  • 改进果蝇优化算法之三:基于分组搜索的果蝇优化算法(G-FOA)
            基于分组搜索的果蝇优化算法(G-FOA)将果蝇群体分为多个小组,每组独立进行嗅觉和视觉搜索,通过信息交换更新最优解,提高搜索效率和全局优化能力。1.果蝇优化算法基础        果蝇优化算法(FruitFlyOptimizationAlgorithm,FOA)是一种基于果蝇觅食行为的......
  • TCP 和 UDP
    目录运输层概述TCP和UDP前置知识套接字套接字类型套接字处理过程IP端口号确定端口号多路复用和多路分解无连接的多路复用和多路分解面向连接的多路复用与多路分解UDPUDP特点UDP报文结构TCPTCP报文段结构序号、确认号实现传输可靠性累积确认传输控制利用窗口控制提高速度窗口......
  • wordpress安装完后台无格式解决方法(样式加载不出来)
     刚安装的wordpress,进入后台后,没有样式。1.如果ip进入,可能一切正常2.域名进入,遇到这种情况概率大(经过了nginx代理)正常访问文章的话是没问题的,只是管理后台存在这样的代码,样式没加载出来。美国随机地址生成器:美国随机地址生成器(随机地址生成器-生成全球真实地址),生成真实......
  • 【迁移学习】原型引导领域感知渐进表示学习(prototype-guided domain-aware progressiv
    【迁移学习】原型引导领域感知渐进表示学习(prototype-guideddomain-awareprogressiverepresentationlearningPG-DPRL)(二)【迁移学习】原型引导领域感知渐进表示学习(prototype-guideddomain-awareprogressiverepresentationlearningPG-DPRL)(二)文章目录【迁移学......