首页 > 其他分享 >斜率优化笔记

斜率优化笔记

时间:2024-11-02 21:32:39浏览次数:5  
标签:log 切到 笔记 凸包 斜率 rm 优化

首先看到有 \(i, j\) 无法分离的项的 \(\rm DP\) 一般就是斜率优化,像 \((s_i - s_j)^2\) 之类的。

首先将转移方程式写成 \(b_i = y_j - k_ix_j\) 的形式,拍到坐标系上。那么等价于用斜率为 \(k_i\) 的直线去切点,第一个切到的点是哪个,即截距最小/最大。显然切到的点在凸包上,即找到第一个凸包上的点 \(q_i\) 满足 \(slope(q_{i - 1}, q_i) \le k \le slope(q_{i}, q_{i + 1})\) 优化方式如下:

  • 如果 \(x, y\) 都单调递增,那么可以直接在 \(\rm DP\) 过程中用单调队列维护一下凸包, \(O(n)\)。

  • 如果 \(x\) 递增的话,可以使用二分队列,\(O(n \log n)\)。

  • 否则 \(\rm CDQ\) 分治 或 平衡树(不推荐),\(O(n \log ^2 n)\)。

但是还有最简单粗暴的方法:即把转移方程式表示成 \(y_j = k_j x_i + b_j\) 这样直线的形式。然后使用李超线段树优化,因为是全局加直线不用分拆区间,离散化 \(x\) 即可做到 \(O(n \log n)\),码量小常数小,还不用动脑子,严格偏序 \(\rm CDQ\) 和平衡树(当然平衡树维护凸包还是很有必要学的)。

标签:log,切到,笔记,凸包,斜率,rm,优化
From: https://www.cnblogs.com/little-corn/p/18522479

相关文章

  • 单双链表(数组模拟)笔记
    单双链表(数组模拟)笔记如题,我们要使用数组来模拟链表这个数据结构区别于传统的结构体链表(动态链表):structnode{ intvalue; structnode*next;//指向下一个节点的指针}user_define_name;//调用链表的别称数组模拟链表(静态链表)的速度更快,但是对于空间的优化不如动态链表......
  • 【复盘笔记】25国考一期_套题5
    目录一、言语理解1.选词填空2.片段阅读二、判断推理1.图形推理2.定义判断3.类比推理4.逻辑推理三、资料分析【笔记说明】:所用试卷为花s老师的套题班试卷,个别过于简单的题目未做解析。该笔记为个人学习自用,顺便分享,希望对您也有所帮助。若转载,请说明出处。一、言语......
  • NGO-RELM基于北方苍鹰优化正则化极限学习机的数据预测Matlab程序多特征输入单输出
    NGO-RELM基于北方苍鹰优化正则化极限学习机的数据预测Matlab程序多特征输入单输出目录NGO-RELM基于北方苍鹰优化正则化极限学习机的数据预测Matlab程序多特征输入单输出预测结果评价指标基本介绍程序设计参考资料预测结果评价指标训练集数据的R2......
  • 从零开始仿抖音做一个APP(启动页icon优化&沉浸式)
    从零开始仿抖音做一个APP(启动页icon优化&沉浸式)沉浸式效果前面完成了欢迎页的简单UI和逻辑处理并实现了Har模块和Hap模块之间的依赖和关联。今天,对遗留问题做一些处理和优化。沉浸式效果典型应用全屏窗口UI元素包括状态栏、应用界面和底部导航条,其中状态栏和导航条,......
  • 集智书童 | 利用知识蒸馏算法优化 YOLOv5 目标检测 !
    本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。原文链接:利用知识蒸馏算法优化YOLOv5目标检测!这篇论文探讨了知识蒸馏技术在目标检测任务中的应用,尤其是不同蒸馏温度对学生模型性能的影响。通过将YOLOv5s作为教师网络和较小的YOLOv5s作为学生网络,作者发现,随......
  • Vue学习笔记(十七)
    4.路由4.1.【对路由的理解】4.2.【基本切换效果】Vue3中要使用vue-router的最新版本,目前是4版本。路由配置文件代码如下:import{createRouter,createWebHistory}from'vue-router'importHomefrom'@/pages/Home.vue'importNewsfrom'@/pages/News.vue'im......
  • Vue学习笔记(十八)
    4.8.【路由传参】query参数传递参数<!--跳转并携带query参数(to的字符串写法)--><router-linkto="/news/detail?a=1&b=2&content=欢迎你"> 跳转</router-link> <!--跳转并携带query参数(to的对象写法)--><RouterLink:to="{//name:'x......
  • 软件系统设计 - 代码优化 代码重构 - 正确的重构方式 与 重构手法列表
    正确的重构方式:不会引入错误并有条不紊地改进程序结构熟练掌握众多重构手法,将思辨与实践结合,迭代持续开展重构工作。运用大量微小且保持软件行为的重构步骤,一步步达成大规模的修改。在开始重构前,我们需要先通读代码,并尝试理解代码如何工作,然后通过重构将这些理解从脑海里......
  • Java 继承机制的笔记 1
    Java继承机制的笔记_1笔记的来源:CS61B-2024春季的课程课程主要内容:数据结构与算法分析课程运用语言:Java这个课有6个Homework,10个Lab,9个Project。其中第一个project是一个完整的2024游戏的实现,很有意思。此文章对应的是课程8-9节的内容。由于内容较多......