首页 > 其他分享 >决策单调性笔记

决策单调性笔记

时间:2022-12-18 13:44:23浏览次数:60  
标签:二分 函数 复杂度 决策 笔记 插入 单调

斜率优化 \(\in\) 决策单调性,但是斜优其实可拓展性较差、甚至整个思路都挺莫名其妙,所以我来重构决策单调性体系了。

注意到“我”又回来了。因为是学习笔记不得不记录思考过程,也就不得不把“我”引进来。

我们要探讨一类问题的优化策略:

给定 \(w{i,j}\),对 \(i \in [1,n]\) 求 \(f_{i} = \min_{j=1}^{i-1} \{w_{j,i} + f_j\}\)。

没有数据范围,我们要研究对什么特征的 \(w\) 能有怎么样的优化。

记 \(f_i\) 的决策点为 \(p_i\),若 \(p_i\) 单调不减,则 \(f_i\) 有决策单调性。

把 \(f_j + w_{j,i}\) 看成关于 \(i\) 的函数,那么每次我们要加入一个函数、查询某点处函数极值。

如果能保证任意两个函数最多相交一次,可以直接维护最优凸壳(事实上这时连接两个点的不一定是直线但一定是某个函数的一段),维护连续两个点横坐标与连接它们的函数的标号。这个似乎被叫做二分栈,斜率优化可以完全被它取代。

如果能保证 \(i \to \infty\) 时新插入函数最优,则可以直接在最右边插入新函数,不断弹出不够优的函数(一定是一段后缀)。查询点递增可以直接挪左端点,否则可以二分之。复杂度均摊是 \(O(n \cdot \omega(n))\) 或 \(O(n \log n \cdot \omega(n))\)(询问点无序),\(\omega(n)\) 是找到两函数交点的时间复杂度。容易发现插入直线时是漂亮的 \(O(n)\),与斜率优化的复杂度一致,而且非常自然、可拓展化,不局限于直线。

P5504 插入的是二次函数,复杂度多一只 \(\log\)(二分交点)。

CF1067D 插入的是直线但求的点值要到 \(10^{18}\) 的范围,所以要二分交点

P3515 插入的是二分之一次函数,

以上建立在函数容易求交点或单点求值的基础上,如果无法轻易单点求值,就需要另辟蹊径。

标签:二分,函数,复杂度,决策,笔记,插入,单调
From: https://www.cnblogs.com/purplevine/p/16990286.html

相关文章

  • git学习笔记
    1、git是什么?Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个......
  • Python学习笔记--函数来啦!
    函数函数,就是组织好的,可重复使用的,用来实现特定功能的代码块实际的小案例:不使用内置函数len,利用函数知识计算出字符串的长度实现:函数的基础定义语法案例:自动查核......
  • 算法学习笔记(48)——状态压缩DP
    状态压缩DP连通性问题一、核心思想:核心:先放横着的,再放竖着的总方案数等于只放横着的小方块的合法方案数。如何判断当前方案是否合法?所有剩余位置,能否填充满竖着......
  • Vue笔记8--状态管理
    1、状态管理简易实现Vuex和pinia可以做状态管理,“状态”可以理解为数据,即在data中定义的参数。有一些公共的属性想要集中管理,方便数据获取。但是对于小项目来说Vuex反而会......
  • C++ Primer Plus(第6版)笔记
    目录C++PrimerPlusNotes第1章预备知识1.1.C++简介第2章开始学习C++2.1.进入C++2.2.C++语句2.3.其他C++语句2.4.函数第3章处理数据3.1.简单变量3.2.const限定符......
  • ElasticSearch学习笔记(2)-数据类型
    一、ES数据类型1、简单数据类型(1)字符串text:会分词,不支持聚合keyword:不会分词,将全部内容作为一个词条,支持聚合 (2)数值long,integer,short,double,float(3)布尔boolean(4)......
  • ElasticSearch学习笔记(3)-常用的操作
    可以使用Postman的接口调用,也可以使用kibana来操作。kibana操作相对简单一些。一、索引的操作1、查询GEThttp://ip:端口/索引名称      #查询单个索引信息......
  • 详解逻辑回归与评分卡-用逻辑回归制作评分卡-重复值和缺失值处理【菜菜的sklearn课堂
    视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili在银行借贷场景中,评分卡是一种以分数形式来衡量一个客户的信用风......
  • 《代码整洁之道》阅读笔记三
    前面也发表了两篇关于Bob老师《代码整洁之道》的阅读笔记,其实那些只是我从书上得来的一些感触。其实发现真正的按照Bob老师所说的方法去进行一个代码规范的时候,不仅仅是在......
  • 《代码整洁之道》阅读笔记一
    最近看了《代码整洁之道》,所以产生了一些感受在编程工程中,会不会经常以下感觉: 1、修改一个bug,会导致其它的bug出现 2、添加一个本来是很简单的需求,要修改几十个模块,......