首页 > 其他分享 >24.12.22

24.12.22

时间:2024-12-22 21:24:09浏览次数:5  
标签:le 22 不等式 24.12 决策 区间 四边形 单调

四边形不等式 / 决策单调性

真正用于优化的性质是决策单调性:对于任意决策点 \(p\),如果 \(i\) 处从 \(p\) 转移都优于从 \(p\) 前转移,则任意大于 \(i\) 的位置 \(i'\) 从 \(p\) 转移都优于从 \(p\) 前转移。

四边形不等式是常见的证明决策单调性的方法。
虽然场上建议打表找规律直接猜

四边形不等式优化 \(f_{i} = \min_{j < i} (F(j) + w(j, i))\)。

\(w(j, i)\) 是区间的代价。
如果 \(w(j, i)\) 满足对于任意 \(a \le b \le c \le d\) 都满足 \(w(a, c) + w(b, d) \le w(a, d) + w(b, c)\)。
则称 \(w(j, i)\) 满足四边形不等式(交叉小于包含)。

上述判断条件等价于
对于任意 \(i < i + 1 \le j < j + 1\)
都满足 \(w(i, j) + w(i + 1, j + 1) \le w(i, j + 1) + w(i + 1, j)\),
这个式子只有两个元多用于四边形不等式证明。

如果 \(w(j, i)\) 满足四边形不等式则转移具有决策单调性


利用决策单调性,可以从前往后 dp,时刻维护每个位置的最优决策点 \(p_i\)。
在转移 \(i\) 时直接从 \(p_i\) 转移,然后以 \(i\) 为决策点去更新后面的 \(p\)。

由于决策单调性,那么 \(p\) 任意时刻单调不降。

那么可以想到,\(p\) 可以划分成若干区间,每个区间内决策点相同,在用决策点 \(i\) 更新 \(p\) 时,\(i\) 占据的区间一定是一个后缀(因为 \(i\) 是当前所有决策点里最大的)。

那么 \(i\) 可以从后往前检查每个区间的左端点,如果 \(i\) 更优,直接把这个区间删掉,否则,说明分界点在这个区间内部,可以二分出分界点,从分界点一直到结尾在当前 \(i\) 都是最优决策。

对于上述区间,由于我们处理的 \(i\) 是单调后移的,所以如果一个区间的右端点已经小于 \(i\) 了,那么它彻底没用了,可以直接删掉。

所以可以双端队列维护这些区间。

复杂度:由于每个决策点只会进出队列一次,所以进出队列复杂度均摊 \(O(1)\),由于在入队时需要二分分界点,所以转移总复杂度 \(O(\log n)\)(默认 \(w\) 可以 \(O(1)\) 计算)。


或者其实不用维护每个决策点的左端点,直接在队列里相邻两个决策点二分找后一个决策点左端点也可以。复杂度不变。

好像这个的模板还挺通用:

// Calc(j, i) = F(j) + w(j, i)
// 求 x 决策点 和 y 决策点的范围的分界点,返回 y 范围的左端点
int get(int x, int y) {
	int l = y, r = n + 1, res = n + 1;
	while (l <= r) {
		int mid = l + r >> 1;
		if (Calc(x, mid) >= Calc(y, mid)) // 这里的大小关系依据题面定
			res = mid, r = mid - 1;
		else
			l = mid + 1;
	}
	return res;
}

//...

for (int i = 1; i <= n; ++i) {
	while (hed < tal && get(q[hed], q[hed + 1]) <= i) ++hed;
	f[i] = Calc(q[hed], i);
	while (hed < tal && get(q[tal - 1], q[tal]) >= get(q[tal], i)) --tal;
	q[++tal] = i;
}

P1912

诗人小 G,年轻人不知道是不是第一款打表找规律决策单调性题。

\(w(j, i) = |sum_i - sum_j - (i - j - 1) - L|^P\)
然后代上面那个两个元的式子小力分类讨论 \(P\) 分奇偶再零点分段去绝对值什么的就可以得到 \(w\) 在任意时候满足四边形不等式。

然后直接做。

P3515 / P5503 / SP9070

纯三倍经验。

得到 \(p \ge a_j\)

标签:le,22,不等式,24.12,决策,区间,四边形,单调
From: https://www.cnblogs.com/KinNa-Sky/p/18622541

相关文章

  • 2024.12.22
    数学归纳法常用公式\((a+b)^n\)\((a+b)^n\)的系数是杨辉三角的某一层,a升幂排列,b降幂排列同理可得\((a-b)^n\),可以看作(\(a+(-b))^2\),与上面相同。......
  • 变量、常量、作用域、关键字、修饰符、标识符20221222
    变量、常量、作用域20241222变量◆变量是什么:就是可以变化的量!◆Java是一种强类型语言,每个变量都必须声明其类型◆Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。◆使用逗号隔开在一行定义多个同类型变量,可以但是不推荐//intdata_04=1,data......
  • 110. Web前端网页案例——【2022冬奥会精品精品网页( 7页)】 大学生期末大作业 html+css
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐♬♬♬欢迎光临我的CSDN!这里是Web前端网页案例大集汇,有各行各业的前端网页案例,每天会持续更新!如果你对Web前端网页......
  • 12.22 归并排序
    includeusingnamespacestd;constintMAXN=10;intn,a[MAXN],b[MAXN];voidmergesort(int*a,intl,intr){inti,j,mid,cnt;if(l==r){return;//TODO}mid=(l+r)/2;mergesort(a,l,mid);mergesort(a;mid+1;r)i=l,j=mid+1,cnt=......
  • AIGC时代算法工程师的面试秘籍(第二十八式2024.12.2-12.15) |【三年面试五年模拟】
    写在前面【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。欢迎大家关注Rocky的公众号:WeThinkIn欢迎大家关注Rocky的知乎:RockyDingAIGC算法工程师面试面经秘籍分享:WeThi......
  • 20241422 《计算机基础与程序设计》第13周学习总结
    2024-2025-120241422《计算机基础与程序设计》第13周学习总结作业信息这个作业属于哪个课程(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(2024-2025-1计算机基础与程序设计第十三周作业)这个作业的目标信息系统、数据库与SQL、人工智能与专家系统、人工......
  • 在 Windows Server 2022 中,您可以设置文件夹共享并配置权限来允许或限制其他用户访问
    在WindowsServer2022中,您可以设置文件夹共享并配置权限来允许或限制其他用户访问。根据您提供的信息,似乎您正在设置名为"share"的共享文件夹。以下是如何在WindowsServer2022中设置和配置文件夹共享的基本步骤:1.共享文件夹右键点击文件夹在文件资源管理器中,找到您......
  • 2024-12-22:矩阵中的最大得分。用go语言,给定一个由正整数构成的 m x n 矩阵 grid,你可以
    2024-12-22:矩阵中的最大得分。用go语言,给定一个由正整数构成的mxn矩阵grid,你可以从任意单元格开始,移动到正下方或正右侧的任一单元格(不要求相邻)。在从值为c1的单元格移动到值为c2的单元格时,得分计算为c2-c1。你的目标是至少移动一次,并找到能够获得的最大总得......
  • 2024.12.21 周六
    2024.12.21周六Q1.1000Lottery"ThreeSevens"washeldfor$m$days.Onday$i$,$n_i$peoplewiththenumbers$a_{i,1},\ldots,a_{i,n_i}$participatedinthelottery.Itisknownthatineachofthe$m$days,onlyonewinnerwasselectedf......
  • Meld 代码比较分析软件Ubuntu22.04尝试
    直接官网下载,linux版本就可以,在执行时提示kairuszhang@kairuszhang:~/下载/meld-3.22.2/bin$./meldMeldrequiresGtkSourceView4.0orhigher.GLib-GIO-Message:23:02:19.773:AddingGResourcesoverlay'/org/gnome/meld=/home/kairuszhang/下载/meld-3.22.2/meld/reso......