<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lsxyza的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lsxyza</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lsxyza]]></copyright><item><title><![CDATA[最短路三种算法——Dijkstra｜SPFA｜Floyd用法详细对比总结]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/164152483</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/164152483</guid><author>lsxyza</author><pubDate>Fri, 28 Aug 2026 19:55:10 +0800</pubDate><description><![CDATA[​是单元最短路算法，用于解决从一个点s出发,求s到其余所有点的最短距离，但是Dijkstra的应用有一个限制—所有边权必须>=0，不能有负边权不然Dijkstra不能用。对于这道题是与并查集一样都必须先初始化就像下面代码一样，把起点s到自己的距离初始化为0，到其它点的距离初始化为无穷大因为一个数据u有两个条件终点v和边权w，而题目是一条有向边，所以我们只需要用邻接表存一次就好接下来就是用优先队列去存储起点s到每个点的距离和点的编号，这样我们每次都能选出当前距离最小还没确定最短路径的点u。]]></description><category></category></item><item><title><![CDATA[【并查集】—详解]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/164151111</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/164151111</guid><author>lsxyza</author><pubDate>Fri, 28 Aug 2026 17:56:37 +0800</pubDate><description><![CDATA[通俗来理解这个概念及做法就是把每个集合都先看成一棵树，把集合的代表元素看成树根，每棵树都代表一组集合，然后我们查看两个数是否在一个集合里面就只需要看两个数的树根是否相同，这是查找的部分，合并就相当于把一棵树的根接在另一颗树下面是它们有共同的根。这道题完全就是在并查集的模板上加了点小的改动，我们就是在查找和合并上再加了最小时间判断，其实我们观察一下题目不难看出来如果我们将修路顺序按所需时间长短来排序，用时短的先修用时长的后修，那么修最后一条路的时间就是我们的总时间。的时候，全部村庄连通，我们可以推导一下。]]></description><category></category></item><item><title><![CDATA[河南省萌新联赛2026第（六）场]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/164063776</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/164063776</guid><author>lsxyza</author><pubDate>Tue, 25 Aug 2026 19:34:09 +0800</pubDate><description><![CDATA[若两个数字的 0‑1 标签不完全相同，必定存在某一位 0、1 不一样，对应的集合就可以区分这两个数，满足题目的条件。对于这道题我们很容易想到，如果区间长度为奇数那么不管怎样反转都不会对最终结果产生任何影响，如果区间长度为偶数，就会使奇偶位置交换这样最终采摘数会发生变化，所以我们对于这道题最好是只考虑偶数情况。接下来我们就该想什么情况下k的最小值=1，就代表着存在一台电梯同时停靠a,b两层，这样就可以直接等到答案为m-a+b;如果a=1||b=1那我们就可以直接坐max(a,b)-1号电梯直接去b层。]]></description><category></category></item><item><title><![CDATA[背包九讲—全解析（详细）]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163893513</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163893513</guid><author>lsxyza</author><pubDate>Wed, 19 Aug 2026 18:17:38 +0800</pubDate><description><![CDATA[这个在背包问题里面算是比较难理解的点，因为它牵扯上了树，属于树形背包，所以我们必须要考虑树形结构父子节点之间的连接，对于这种背包题目给我们限制如果我们选择了一个物品，那么，它的父节点的物品我们也必须选择，有点类似于分组背包吧，但是又有很大不同，我们如果要选择子节点就必须选择它的父节点，那么我们就容易想到这道题最好用递归，从子节点向上递推，直到达到最优解。所以对于混合背包的解法，我们就可以分为三部分，先判断si的值，如果si=-1就用01背包模板解题，如果si=0就用完全背包，si>0就用多重背包。]]></description><category></category></item><item><title><![CDATA[倍增思想（ST表、共同祖先）]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163818798</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163818798</guid><author>lsxyza</author><pubDate>Mon, 17 Aug 2026 11:16:40 +0800</pubDate><description><![CDATA[倍增其实就是成倍的扩大步伐，跳跃着去完成遍历，这样就可以更快的逼近目标，很大的减少了时间复杂度。核心：利用二进制，把一个数字拆成若干个 2 的幂次相加。例如：13=8+4+1，也就是 2+2+2;这就意味着我们不去一步跳 1，而是直接跳 8 步、再跳 4 步、再跳 1 步，。简单来说就是如果想跳的很远，我们就先去试大步，如果大步跳超了就换小一半的步，不断减半，直到凑够总步数f[k][u]代表：从 u 出发，跳 2^k步后到达哪里。跳 2步 = 先跳 2步，再跳 2步。]]></description><category></category></item><item><title><![CDATA[高精度乘除法]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163703834</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163703834</guid><author>lsxyza</author><pubDate>Wed, 12 Aug 2026 19:33:16 +0800</pubDate><description><![CDATA[*数组存储规则：**下标 1 代表个位，下标越大数字越高位，数组只保留后 500 位（题目仅要求末尾 500 位）。高精度问题在竞赛中很常见，也经常与其他类型的题目混用，是比较基础的算法，有固定的模板可以直接用我们先来看高精度乘法。设数字 A 长度n，数字 B 长度m，乘积最大长度一定是 n+m，提前开大小为n+m的结果数组res，初始全 0。**高精度乘法的存储规则：**把数字倒着存入数组：个位存在下标 0，十位下标 1，百位下标 2以此类推。]]></description><category></category></item><item><title><![CDATA[dfs算法应用]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163554035</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163554035</guid><author>lsxyza</author><pubDate>Fri, 07 Aug 2026 09:40:52 +0800</pubDate><description><![CDATA[6.E走完后下面又没有节点了，所以我们继续回退到B，但是B的阶段已经全部访问，所以有会从B回退到A。为啥上限是这个：剩下这么多份，每份至少 i，如果 i 太大，凑不齐，不用试。7.A剩下一个节点C我们继续访问，但是C没有子节点了，相当于访问结束。3.访问B的第一个子节点D，此时D下面什么都没有，证明走到头了。的全排列，要求所产生的任一数字序列中不允许出现重复的数字。份，且每份不能为空，任意两个方案不相同（不考虑顺序）。组成的所有不重复的数字序列，每行一个序列。5.B另一个子节点是E，我们局继续访问。]]></description><category></category></item><item><title><![CDATA[河南省2026萌新联赛第（三）场补题]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163479165</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163479165</guid><author>lsxyza</author><pubDate>Tue, 04 Aug 2026 17:52:28 +0800</pubDate><description><![CDATA[链接：https://ac.nowcoder.com/acm/contest/138881/A来源：牛客网有 n 个任务。执行第 i个任务前，你的当前能量必须不少于 hih_ihi；任务完成后，能量变化 di，即变为当前能量+di每个任务必须且只能执行一次，你可以自由决定执行顺序。所有时刻能量都不能为负。已知 hi+di≥0，因此只要执行前满足门槛，执行后就不会立刻变成负数。求完成所有任务所需的最小初始能量。]]></description><category></category></item><item><title><![CDATA[二叉树的概念及用法]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163430076</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163430076</guid><author>lsxyza</author><pubDate>Mon, 03 Aug 2026 10:09:40 +0800</pubDate><description><![CDATA[是每个节点，顺序不能互换。]]></description><category></category></item><item><title><![CDATA[bitset应用与相关题型]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163374727</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163374727</guid><author>lsxyza</author><pubDate>Sat, 01 Aug 2026 11:31:20 +0800</pubDate><description><![CDATA[牛客竞赛是专业的编程比赛和算法训练平台，包括ACM校赛、ICPC、CCPC、信息学奥赛、NOIP、NOI等编程比赛提高训练营。适合初级小白编程入门训练，包含NOIP普及组提高组赛前集训、ACM区域赛前多校训练营。，存储的是二进制，里面每一位只保存0和1，一般用于背包问题或者集合求交并集，他一般会用在暴力超时的时候，如果我们一道题用暴力枚举会超时，我们就可以选择bitset将其转化成二进制相关问题，可以极大的优化代码。因为一组只能选一个数，用 tmp 临时存方案，避免同一组多选数字。题意：有 n 组数字，]]></description><category></category></item><item><title><![CDATA[优先队列(priority_queue)]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163310187</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163310187</guid><author>lsxyza</author><pubDate>Wed, 29 Jul 2026 19:10:35 +0800</pubDate><description><![CDATA[我之前博客中有队列相关的知识点但是不完全，其中有简单队列也有单调队列，现在我们着重看一下优先队列。优先队列一般有两种用法---大根堆和小根堆一般用于求第k大/第k小的数或者贪心类问题；这道题我们可以用优先队列与pair结合用pair存储下标与成绩队列顶部一定为目前最大值。用优先队列时我们要注意当队列为空时不能用top/pop否则程序会崩溃。这道题我们就用小根堆，当堆里面有k个元素时堆顶就是第k大元素。的运动员得分最高，名次第。位运动员的获奖情况。数据流中的第k大元素。]]></description><category></category></item><item><title><![CDATA[暑假第一周题目及代码汇总（包括queue、map、vector、stack、set、二分）]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163191387</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163191387</guid><author>lsxyza</author><pubDate>Sat, 25 Jul 2026 12:55:38 +0800</pubDate><description><![CDATA[定一个只包括'('')''{''}''['']'的字符串s，判断字符串是否有效。有效字符串需满足：左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。s = "()"truetrue​// 必须加上Solution类public:else{st.pop();]]></description><category></category></item><item><title><![CDATA[计蒜客完美k倍子数组]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163186018</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163186018</guid><author>lsxyza</author><pubDate>Sat, 25 Jul 2026 11:05:21 +0800</pubDate><description><![CDATA[这道题主要考的是map的应用还有思维，写的时候你要想到—如果要让任意两个数相加等于k的倍数应该满足的条件是他们两个数的余数相加应该等于k或者他们本身就是k的倍数，例如k=7,3%7=3;而14正好是7的倍数，但是这样组成的子数组如果k是奇数的话长度最长只有2，因为我们不管在这个子数组里面加什么元素都会发现会破坏数组的完美，所以我们就可以得出一个结论，如果k是奇数那我们的字数组只有两种情况，一种是—全是k的倍数形成的子数组；]]></description><category></category></item><item><title><![CDATA[队列——切蛋糕]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163084521</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163084521</guid><author>lsxyza</author><pubDate>Tue, 21 Jul 2026 19:23:06 +0800</pubDate><description><![CDATA[题目要求小Z能得到的最大幸运值就相当于求在一段长度小于m的任意长度区间内，能得到的最大幸运值，如果全为正可直接用前缀和解决，只需要求出值最大的段区间的和就行，但这道题我们需要考虑负数的情况就要再加上单调递增队列。因为段区间在[l,r]间，所以r-l-1<=m;这道题是前缀和与单调队列的结合。]]></description><category></category></item><item><title><![CDATA[单调队列——滑动窗口]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/163077309</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/163077309</guid><author>lsxyza</author><pubDate>Tue, 21 Jul 2026 14:43:10 +0800</pubDate><description><![CDATA[从队列尾部往前看，如果队列末尾存的下标对应的数字，比现在遍历到的数字更大，那末尾这个数字永远不可能成为任何窗口的最小值，直接删掉。，队列内元素下标对应的数值严格保持单调递增 / 递减，只能在队尾插入、队头删除，用来快速求区间最值，时间复杂度 O(n)。检查队列最前面的下标，如果这个下标已经跑到当前窗口左边外面了（不在长度 k 的窗口里），就把它从队头删掉。单调递增队列：队头最小，整个队列严格单调递增用于滑动窗口求最小值。单调递减队列：队头最大，整个队列严格单调递减用于滑动窗口求最大值。]]></description><category></category></item><item><title><![CDATA[训练赛D题、E题题解]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/161798940</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/161798940</guid><author>lsxyza</author><pubDate>Mon, 08 Jun 2026 14:32:16 +0800</pubDate><description><![CDATA[我们先来看D题的题目其实这道题就是很典型的数学规律题，基本上不涉及任何算法，我们首先要理解题目意思，他说的是对于n个数中的每个数都要求出包含该数字数组的最小长度，根据所给的样例我们可以知道当n==1||n==2时都无法进行数字的删除，所以这种情况下我们直接输出对应的数就好，而对于2以上的数字，我们稍微想一下就可以发现不管这个数是几，包含他的最小数组长度都为2。我们再来看E题题目Yousef 给了你一个包含 n 个正整数的数组 a。定义 f(a)为数组 a 中所有乘积能被 6整除的子数组数量。]]></description><category></category></item><item><title><![CDATA[二维差分数组]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/161632212</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/161632212</guid><author>lsxyza</author><pubDate>Tue, 02 Jun 2026 20:08:28 +0800</pubDate><description><![CDATA[只修改 4 个点，O(1) 完成子矩形批量修改。用途：二维子矩阵批量加减，高效替代暴力遍历。核心：修改 四个点 且最后一次前缀和还原。最后对差分数组做二维前缀和即可。，就能得到最终修改后的数组。]]></description><category></category></item><item><title><![CDATA[牛客周赛Round145 B 题及小红的最佳区间题目解析]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/161459054</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/161459054</guid><author>lsxyza</author><pubDate>Fri, 29 May 2026 17:06:57 +0800</pubDate><description><![CDATA[对每一个给定区间  [li, ri] ，能让它和你区间重叠的 L 是一个区间：[li−k , ri]- 原问题变成：数轴上有 n 个区间，找一个点 L，被最多区间覆盖，求这个最大覆盖数。- 到 x=6：离开 → −1（因为 5 还在区间内，6 才出去）你选 L=1 → 你的区间 [1,3]和区间1、区间2都重叠 → 答案=2。- 每进入一个区间 → 覆盖数 +1。- 每离开一个区间 → 覆盖数 −1。我们的区间是  [L, L+k]- (位置, +1)：开始覆盖。- (位置, −1)：结束覆盖。]]></description><category></category></item><item><title><![CDATA[2026年临沂大学程序设计挑战赛A题B题解析]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/161393958</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/161393958</guid><author>lsxyza</author><pubDate>Mon, 25 May 2026 16:17:57 +0800</pubDate><description><![CDATA[首先对于A题我们先看题目:单看这道题的题面我刚开始只能想到用字符串查找，一个一个比较，但是这样显然太过麻烦还很容易出错，所以我们要用其他方法，我想了想发现这道题是一个类似二分查找的问题，我们先设l=0,再设r=n-1，只要s[l]和s[r]不相等，就意味着我们要删除它，删除次数cnt就要加一，接着再继续比较s[l+1]和s[r]如果相等就可以让l++,不行的话就比较s[l]和s[r-1]如果相等就让r--；]]></description><category></category></item><item><title><![CDATA[牛客周赛 Round 142 C题及D题题解]]></title><link>https://blog.youkuaiyun.com/lsxyza/article/details/161323590</link><guid>https://blog.youkuaiyun.com/lsxyza/article/details/161323590</guid><author>lsxyza</author><pubDate>Fri, 22 May 2026 22:17:05 +0800</pubDate><description><![CDATA[要写这道题我们首先要搞懂题目意思其实就是一道简单的枚举，第一个人向右传 0 或 1 颗糖，然后递推验证整圈是否能合法均分糖果，能的话输出 “YES”，不能的话就输出 “NO”。2.由题意可知最后每个小朋友的糖书应该都相等，所以都为平均值avg，所以我们也要先计算出平均值。4.如果小朋友递出去的糖果数目小于0或大于1都违反了题目规则，直接就可以返回false.3.每个小朋友递出去的糖数应该为从上一个小朋友手里拿到的糖数减去平均糖数。7.只要有一个返回true,我们就可以输出YES，否则输出NO。]]></description><category></category></item></channel></rss>