logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【算法进阶】图解树上差分思想:利用LCA在树上实现路径O(1)修改(洛谷 P3128 附C++代码)

这么看起来,似乎这个边差分也就更简单了。根据这个我们可以写出以下代码。由于我这个题只是自己瞎编的,只是为了演示边差分,所以代码如果有错误欢迎提出。

文章图片
#图论#算法
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)

由于本人较菜,所以滚动数组我写得更好理解一点的奇偶滚动数组,感觉类似 01 背包的滚动数组写法还是有点难理解。以下是本人的代码。#define int long long//我用个long long怕不知道哪里爆了虽然有取模//记得取模//dp数组int n,m,k;string a,b;cin>>a>>b;//我对字符串a和b都做了一点下标偏移,让下标从1开始而不是0开始,更符合直觉a=" "+

#动态规划#算法
2026 第十七届蓝桥杯软件赛 C++B组 国赛比赛经历及备赛建议

今天 6.6 蓝桥杯的国赛结束了,感觉还是有难度的,。我这个小蒟蒻可以说感觉能全A的可能也只有 C 题和 D 题了吧,其他都基本上乱蒙或者暴力了。在此和大家分享一下我做题思路和我个人认为的备赛建议。

#蓝桥杯#c++#算法 +1
【数据结构】可持久化线段树:图解原理逻辑及版本实现细节(洛谷 P3919 C++代码)

理解完全部的代码之后,其实这也并不算特别难。最重要的,是理解可持久化的这个算法思想。面对需要多个版本保存的时候,对相同的地方完全可以进行复用而不是多次复制导致冗余,只对两个版本不同的地方进行独立的修改和存储。这种思想不仅仅可以用于线段树,还可以用于其他数据结构进行结合,比如权值线段树,并查集等等,实现多种用途。最后给出这道题目的完整代码。//记录每一个版本线段树的根节点编号//记录每个节点的左子节

文章图片
#算法#数据结构
【算法专项】扩展域并查集:原理详解及解决大部分种类并查集问题(洛谷P5937 P2024 C++代码)

其实扩展域并查集作为带权并查集在解决种类并查集问题时候的一个平替,思考逻辑来说确实是没这么难的,但我们也不能轻视逻辑混乱的问题。就像刚刚我提出的,一般维护 n 元关系那么操作并查集的时候肯定是至少有 n 次操作才能逻辑完备的。这个原则可以让我们检查明显的逻辑遗漏。但是有时候我们的逻辑不止是遗漏,还有冗余。比如同样的一个意思 A 吃 B ,我们会有很多的操作方式来表达,但我们如何判断这个操作是否有效

文章图片
#算法#c++#数据结构
【算法详解】三分查找:单峰函数判定和实数与整数三分模板图解(附 C++ 模板代码)

我们知道,二分查找首先就是需要保证我们进行查找的区域必须是的。如果不单调,我们就无法直接判定我们二分的当前一半区域是否全部不符合我们的标准,从而无法直接舍弃一半的搜索区间。。如下图的单峰函数。很显然,二分此时无法解决了(实际上可以二分导数,但这里暂不讨论)。我们无法确定二分到的左半边和右半边是否可以直接舍去不看。为了解决这个问题,我们要用到查找这个方法。细分下来,可以分成,二者有一点细微差别。实数

文章图片
#算法
到底了