首页 > 其他分享 >DP-子序列问题(待完善

DP-子序列问题(待完善

时间:2025-01-05 09:00:03浏览次数:6  
标签:完善 下标 树状 数组 序列 id DP

DP-子序列问题(待完善

上升子序列

  • 定义:在一个序列 \(a\) 中满足 $a_j < a_i $ 且 \(j<i\) 的子序列。

  • \(e.g.\) 在序列 { \(0\) \(3\) \(2\) \(5\) \(1\) \(4\) } 中 { \(0\) \(1\) \(4\) } 与 { \(3\) \(5\) } 便是其中两个上升子序列。

最长上升子序列

  • 定义:在满足上升子序列的同时,长度最长的子序列。

  • \(e.g.\) 在序列 { \(0\) \(3\) \(2\) \(5\) \(1\) \(4\) } 中 { \(0\) \(1\) \(4\) } 与 { \(0\) \(2\) \(5\) } 是其中两个上最长升子序列,长度都为 \(3\) 。

  • 求解:

    • \(O(n^2)\) 的 \(DP\) 设计状态为前 \(i\) 位最长子序列的长度为 \(j\) ,逐步转移即可。

    • \(O(n \log n)\) 树状数组加贪心解法:

      • 最长上升子序列本质为同时满足值单调递增下标单调递增的最长子序列。

      • 由此,记录每个值的下标 \(a[i].id\) ,然后将数组按值排序,使序列满足值单调递增的条件。顺序遍历数组。更新时 \(i\) 时从第一个原下标都比自己小的地方转移即可。

        树状数组能够维护原序列中最长子序列的长度,并且因为数组有序,更新 \(i\) 时树状数组中已更新的值必然都小于等于 \(a[i].x\) ,所以直接从树状数组中第一处原序号在 \(i\) 之前的地方转移即可。

      • 核心代码:

        add(a[i].id,ask(a[i].id-1)/*查询原序列中满足j<a[i].id的最长子序列*/+1);
        

标签:完善,下标,树状,数组,序列,id,DP
From: https://www.cnblogs.com/Kx-Triumphs/p/18652977

相关文章

  • GDPR系统——监管体系
    欧盟各国家内有独立的监管机构,在面对跨境问题、跨国公司问题时,通过一致性机制来协调、共同决策。1、监管机构类比于国内网信办、工信部、四部委等监管机构,欧盟的机关单位有哪些呢?1)欧盟数据保护委员会(EuropeanDataProtectionBoard,EDPB):“最高委员会”是欧盟GDPR下的监管机构,......
  • GDPR——管辖权和域外效力
    判定企业是否需要遵循GDPR的要求,第一步需要判断是否属于GDPR的管辖范围。粗略讲分为两类:1、营业地在欧盟(域内):注册地、在欧盟区域设有办事处等分支机构2、营业地不在欧盟(域外):但针对欧盟公民处理数据(提供服务、监控等)进一步的判定如下:“营业活动”:指通过稳定的安排而实施地有效......
  • GDPR——数据控制者/处理者的职责
    合法合规前提/原则(PbD)PrivacybydesignDPIA数据出境数据共享/委托DPO(必须设立的三个场景、工作职责内容等)数据保护措施(加密、匿名化、去标识化等)履行数据主体的权利事件披露:数据泄漏上报72H内。流程?哪个机构?入口?文档模板?合作和监管1)组织建设欧盟境内设立代理人角色......
  • 数字分段(dp)
    给定数组,将数组分为尽可能少的段使得每一个段的第一个或最后一个数字是段的长度,求最少的段数线性dp令dp[i]表示将前i个数字全部分好段最少的段数dp[0]=0枚举每一个a[i],这个数字有两种分段方案:作为某个段的结尾:dp[i]=min(dp[i],dp[i-a[i]]+1)作为某个......
  • 数位翻转(dp)
    给一n个数字的数组,一个翻转操作将一个数按二进制形式翻转再转回十进制.问最多翻转m个连续段,完成后数组和最大为多少.先求贡献数组(翻转后能增加多少),然后问题转化为数组中选m个段和最大,这和最大连续子数组和是不同的(只有一个段).定义\(dp[i][j][0]代表在递推......
  • 2025-01-04:不包含相邻元素的子序列的最大和。用go语言,给定一个整数数组 nums 和一个由
    2025-01-04:不包含相邻元素的子序列的最大和。用go语言,给定一个整数数组nums和一个由二维数组queries组成的查询列表,其中每个查询的格式为queries[i]=[posi,xi]。对于每个查询i,首先将nums[posi]的值更新为xi,然后计算在这一更新后,数组nums中所有不包含相邻元素的子序......
  • 20章6节:绘制切尔诺夫面图(疼痛评分的笑脸可视化)和时间序列数据的日历热图
    数据可视化是数据科学中重要的一环,不仅能够帮助研究人员快速发现数据规律,还能直观呈现复杂的多维数据。在众多数据可视化方法中,切尔诺夫面图和日历热图因其独特的表达方式而备受关注。切尔诺夫面图通过人脸特征(如眉毛、眼睛和嘴巴)来呈现多变量数据,以便更自然地传递信息;而日历......
  • 基于不变学习的分布外泛化时间序列预测
    论文学习:基于不变学习的分布外泛化时间序列预测论文:Time-SeriesForecastingforOut-of-DistributionGeneralizationUsingInvariantLearning代码:https://github.com/AdityaLab/FOIL?tab=readme-ov-file来自ICML(CCF—A会议)1摘要(Abstract)文章的主要研究内容是针对......
  • Web安全基础:反序列化漏洞详解(含PHP,Python示例)
    当系统接收和处理外部输入的数据时,可能会通过反序列化过程执行恶意代码或操作。这个漏洞的根本原因在于,系统对反序列化数据的处理不够严格,导致攻击者能够将精心构造的数据注入到反序列化流程中,进而达到远程代码执行、数据篡改、权限提升等目的。序列化与反序列化序列化:将......
  • 关于此题[ABC382E] Expansion Packs 概率DP的一些总结
    传送门首先看到这道题,我们发现想要求收集K个卡牌的期望开包数,必须要先求出每个包开出0~n张卡各自的概率,于是预示着这道题将要进行两次概率DP。首先我们求每个包开出0~n张卡各自的概率。这个很好求,我们假设f[i][j]表示前\(i\)张卡中开出\(j\)张卡的概率,那么显然有:\(f[i][j]=p[......