首页 > 其他分享 >线段树优化DP

线段树优化DP

时间:2024-11-18 14:30:15浏览次数:1  
标签:10 le 线段 DP 优化 sum dp

dp,即动态规划中有一类很重要的优化,叫做线段树优化。本文将介绍几种常见的类型及其套路和一些例题。

前置知识:线性 dp、线段树。

权值线段树优化 dp

此类题目的 dp 转移通常和数值的大小关系有关,以下将介绍几道权值线段树优化 DP 题。

CF597C Subsequences

给定一个 \(1\sim n\) 的排列 \(a\),求 \(a\) 中长度为 \(m+1\) 的上升子序列个数(IS)。
\(1\le n\le 10^5\),\(0\le m\le 10\),\(1\le a_i\le n\),答案不超过 \(8\times 10^{18}\)。

首先设计 dp,\(dp_{i,k}\) 表示以第 \(i\) 位为结尾,构成长度为 \(k\) 的 IS 的个数。

转移有

\[dp_{i,k}=\sum_{j=0}^{i-1} dp_{j,k-1} (a_j < a_i) \]

如果没有 \(a_j < a_i\) 的限制,显然可以前缀和优化。那有了这个限制之后,是不是可以写成:

\[dp_{i,k}=\sum_{l=1}^{a_i - 1}\sum_{j=0}^{i-1} dp_{j,k-1} (a_j = l) \]

如果令 \(s_{i,k,x}\) 表示 \(\sum_{j=0}^{i-1} dp_{j,k} (a_j = x)\),那么有:

\[dp_{i,k}=\sum_{l=1}^{a_i - 1}s_{i,k,l} \]

这时候就看的很清楚了,可以把 \(s_{i,k,l}\) 丢到线段树上的第 \(l\) 位。枚举 \(k\),那么 \(dp_{i,k}\) 就是查线段树上 \(l\in [1,a_i-1]\) 的 \(\sum s_{i,k-1,l}\)。当然,树状数组也是完全可以的。

时间复杂度 \(\mathcal{O}(nk\log n)\)。

P3431 [POI2005] AUT-The Bus

(太简单所以懒得写)

CF474E Pillars

(太简单所以懒得写)

线段树优化 dp 决策

这类题的 dp 转移方程通常有一个贡献,这个贡献会随着决策点的变化而变化。这个时候可以考虑使用线段树优化 dp 的决策。

CF833B The Bakery

标签:10,le,线段,DP,优化,sum,dp
From: https://www.cnblogs.com/avalaunch/p/18552581

相关文章

  • 高效处理日均5000亿+数据:58集团基于Apache SeaTunnel的数据集成平台架构优化
    视频链接:58集团大数据平台基于ApacheSeaTunnel的架构演进https://www.bilibili.com/video/BV19GUPYcEgB/?vd_source=e139ecc995ab936267a7991b9de55f6c引言在数字化时代,数据已成为企业最宝贵的资产之一。58集团作为中国领先的生活服务平台,其大数据部在数据集成平台的建设上不......
  • LaTeX教材排版-03:OptionsAndPackages.tex文件说明
    LaTeX教材排版-03:OptionsAndPackages.tex文件说明Latex教材OptionsAndPackages.tex这个文件的作用有两个,一个是自定义了一些文类的选项,根据这些选项做对应的设置,包括调用Book文类等;一个是导入需要用到的宏包。文件内容如下:\newif\ifistwoside\istwosidefalse\DeclareOption{t......
  • 【tokenization分词】WordPiece, Byte-Pair Encoding(BPE), Byte-level BPE(BBPE)的原
    目录前言1、word(词粒度)2、char(字符粒度)3、subword(子词粒度)WordPieceByte-PairEncoding(BPE)Byte-levelBPE(BBPE)总结前言Tokenization(分词)在自然语言处理(NLP)的任务中是最基本的一步,将文本处理成一串tokens用于后续的处理,把文本处理成token有一系列的......
  • DP学习总结
    动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。-----OIWiki例.1-最大子段和分析DP四步⑴定义状态定义\(dp_i\)表示以\(i\)结尾的最大子段和⑵分析答案答案即\({\max}^{i\in[1,n]}_{dp_i}\)⑶分析方程对于每个\(i\):可以与\([1,i-1......
  • 高效优化 AI 文本——推荐一个好用的免费工具:BEXI.ai
    摘要:BEXI.ai是一款免费且简单好用的工具,能快速将AI生成的文本优化为更自然流畅的内容,适合内容创作者、营销人员等需要高效提升文本质量的人群。作为一名内容创作者,我最近发现了一款非常实用的AI文本优化工具——BEXI.ai。它的功能非常直观,无需复杂操作即可将冷冰冰的AI生......
  • Cesium初级开发教程之十五:抗锯齿和分辨率优化
    一、效果图 二、代码//抗锯齿viewer.scene.fxaa=true;viewer.scene.postProcessStages.fxaa.enabled=trueviewer._cesiumWidget._supportsImageRenderingPixelated=Cesium.FeatureDetection.supportsImageRenderingPixelated()vi......
  • QObject,QMainWindpw,QWidget,QDialog介绍
    QObjectQObject的角色和特点在Qt框架中,QObject是整个对象模型的核心基类,它为Qt对象树和信号-槽机制提供了基础支持。很多Qt的类(包括QWidget、QDialog、QMainWindow)都直接或间接继承自QObject。QObject的核心功能对象树管理(ObjectTree)QObject提供了父子关......
  • 网络编程-002-UDP通信
    1.UDP通信的简单介绍1.1不需要通信握手,无需维持连接,网络带宽需求较小,而实时性要求高1.2包大小有限制,不发大于路径MTU的数据包1.3容易丢包1.4可以实现一对多,多对多2.客户端与服务端=发送端与接收端代码框架收数据方一般都是客户端/接收端3.头文件#include<arpa/ine......
  • MySQL系统优化
    文章目录MySQL系统优化第一章:引言第二章:MySQL服务架构优化1.读写分离2.水平分区与垂直分区3.缓存策略第三章:MySQL配置优化1.内存分配优化BufferPool的优化查询缓存与表缓存KeyBuffer2.连接优化最大连接数会话超时连接池3.日志管理慢查询日志BinLog日志第......
  • 使用 Axios 拦截器优化 HTTP 请求与响应的实践
    目录前言1.Axios简介与拦截器概念1.1Axios的特点1.2什么是拦截器2.请求拦截器的应用与实践2.1请求拦截器的作用2.2请求拦截器实现3.响应拦截器的应用与实践3.1响应拦截器的作用3.2响应拦截器实现4.综合实例:一个完整的Axios配置5.使用拦截器的好处与注......