决策单调性优化dp

news/2024/10/18 2:38:14/

区间类:

P1880 [NOI1995] 石子合并
f i , j = m a x ( f i , k + f k + 1 , j ) + w i , j f_{i,j}=max(f_{i,k}+f_{k+1,j})+w_{i,j} fi,j=max(fi,k+fk+1,j)+wi,j
w i , j w_{i,j} wi,j满足区间单调性和四边形不等式,则 f i , j f_{i,j} fi,j满足四边形不等式
p i , j p_{i,j} pi,j f i , j f_{i,j} fi,j的最优转移点
f i , j f_{i,j} fi,j满足四边形不等式,则 p i , j − 1 < = p i , j < = p i + 1 , j p_{i,j-1}<=p_{i,j}<=p_{i+1,j} pi,j1<=pi,j<=pi+1,j

分段2D1D类 分治优化:

f i , j = m i n ( f i − 1 , k + w k + 1 , j ) f_{i,j}=min(f_{i-1,k}+w_{k+1,j}) fi,j=min(fi1,k+wk+1,j),反证法证决策单调
P4072 [SDOI2016] 征途
CF321E Ciel and Gondolas 二维前缀和+分治优化
CF868F Yet Another Minimization Problem
决策单调,分治然后暴力更新区间信息,因为每个递归层区间端点最多移动 n n n次,一共 l o g n log n logn个递归层,所以均摊 O ( 1 ) O(1) O(1)

P5574 [CmdOI2019] 任务分配问题
思路类似上一题,只不过更新区间时多套一个树状数组辅助更新即可

Zombies
很像邮局那种,我们肯定是将区间中点靠得比较近的区间交给一个自动的机器管理即可,所以先将区间排序
然后转换为2D1D类经典问题,先分析这个dp肯定是满足决策单调的,接下来就是如何快速求 w i , j w_{i,j} wi,j

易证机器开始区间肯定是在某个区间左端点,或者结束区间时某个区间右端点,所以正常可以枚举 i , j i,j i,j,然后枚举开始的时间,然后再遍历一遍 i , j i,j i,j区间 O ( n 4 ) O(n^4) O(n4),然后预处理前缀和可以做到 O ( n 3 ) O(n^3) O(n3)
容易证明它也是具有决策单调性的,可以优化到 o ( n 2 ) o(n^2) o(n2)

最后分治优化dp

1D1D类

证明决策单调,然后用单调队列维护每个点作为最优决策点的范围,每次加入点 二分更新

int head=1,tail=0;q[++tail]=node{0,n+1};for (int i=1;i<=n;i++){while (head<tail&&q[head].r<=i){head++;}f[i]=f[q[head].pos]+cal(q[head].pos+1,i);pre[i]=q[head].pos;while (head<tail&&find(q[tail].pos,i)<=q[tail-1].r){tail--;}q[tail].r=find(q[tail].pos,i);q[++tail]=node{i,n+1};}

P1912 [NOI2009] 诗人小G
常规分组,记录一下转移点即可
P3515 [POI2011] Lightning Conductor
转换一下式子,分成两次dp,每次可以决策单调优化
P6246 [IOI2000] 邮局 加强版
The 2018 ACM-ICPC Asia Nanjing Regional Programming Contest B
先wqs二分,然后转换为1D1D类


http://www.ppmy.cn/news/1095845.html

相关文章

springboot 请求https的私有证书验证

一、方案描述 我这里采用RestTemplate的方式调用https请求&#xff0c;请求第三方接口获取数据&#xff0c;证书由第三方私自签发的证书&#xff0c;我们构建的是一个springboot的API项目。 1.pom文件引入jar <dependencies><dependency><groupId>org.spr…

OmniGraffle Pro for Mac 中文正式版(附注册码) 苹果电脑 思维导图软件

OmniGraffle Pro是OmniGraffle的高级版本&#xff0c;它提供了更多的功能和工具&#xff0c;可以帮助用户创建更为复杂和高级的图表和流程图。OmniGraffle Pro支持自定义形状、图形、线条和箭头等&#xff0c;可以让用户创建出更加精细的图表。此外&#xff0c;OmniGraffle Pro…

《热题100》字符串、双指针、贪心算法篇

思路&#xff1a;对于输入的的字符串&#xff0c;只有三种可能&#xff0c;ipv4,ipv6,和neither ipv4:四位&#xff0c;十进制&#xff0c;无前导0&#xff0c;小于256 ipv6:八位&#xff0c;十六进制&#xff0c;无多余0&#xff08;00情况不允许&#xff09;&#xff0c;不…

Kubernetes禁止调度

在Kubernetes中&#xff0c;您可以通过几种方式来禁止某个Pod调度到节点上。以下是一些方法&#xff1a; Node Selector&#xff1a;您可以使用Node Selector来限制Pod只能调度到带有特定标签的节点上。如果您希望完全禁止Pod调度到某些节点上&#xff0c;可以确保这些节点不拥…

Vim 插件应用篇 vim-plug:简洁高效的Vim插件管理工具

用插件管理插件 Vim-plug介绍 Vim-plug 是一个Vim插件管理器&#xff0c;利用异步并行可以快速地安装、更新和卸载插件。它的安装和配置都非常简单&#xff0c;而且在操作过程中会给出很多易读的反馈信息&#xff0c;是一个自由、开源、速度非常快的、并行地安装或更新插件&a…

css flex:1;详解,配合demo效果解答

前言 给设置了display&#xff1a;flex的子组件设置了flex&#xff1a;1&#xff1b;就能让他填满整个容器&#xff0c;如果有多个就平均 flex&#xff1a;1&#xff1b;是另外三个样式属性的简写&#xff0c;等同 flex-grow: 0; flex-shrink: 1; flex-basis: auto;我们就针…

【数据仓库基础(三)】抽取-转换-装载

文章目录 一. ETL概念二. 数据抽取1&#xff0e;逻辑抽取2&#xff0e;物理抽取3&#xff0e;变化数据捕获 三. 数据转换四. 数据装载 一. ETL概念 ETL一词&#xff0c;它是Extract、Transform、Load三个英文单词首字母的简写&#xff0c;中文意为抽取、转换、装载。ETL是建立…

英语语法笔记

1.英语五大句型 主谓&#xff08;主语动词&#xff09; 主谓宾&#xff08;主语动词宾语&#xff09; 主谓宾宾&#xff08;主语动词简接宾语直接宾语&#xff09; 主谓宾补&#xff08;主语动词宾语宾语补语&#xff09; 主系表&#xff08;主语系动词主语补语&#xff09; 1…