<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[H_begin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/H_begin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; H_begin]]></copyright><item><title><![CDATA[双指针之最长连续不重复子序列问题(巨]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/146270657</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/146270657</guid><author>H_begin</author><pubDate>Sat, 15 Mar 2025 00:33:34 +0800</pubDate><description><![CDATA[我们看到题目中给的 n 的范围并不大，所以可以开辟一个数组，以这个数作为数组下标，存储这个数字出现的次数，感觉有点像H-index那道题 (那 n 的范围大的话怎么办呢，答用哈希表，但是目前还没学到数据结构这部分哈)双指针一般有两种类型，第一种是每个指针指向各自的一个序列，两者遍历的内容并不会重合，典例是之前学的归并排序中归并的过程，第二种是指向同一个序列，像快排是两个指针相向而行，叫做。给定一个长度为 n 的整数序列，请找出最长的不包含重复的数的连续区间，输出它的长度。所以有必要优化一下了，那么。]]></description><category></category></item><item><title><![CDATA[二维差分问题----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145840222</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145840222</guid><author>H_begin</author><pubDate>Mon, 24 Feb 2025 23:07:28 +0800</pubDate><description><![CDATA[我们看到上图第三个矩形，如果在所示位置加 c ，那么最后在求  b 数组的前缀和的时候，会让打对号的位置都加上 c ( 因为它们和左上角的连线的矩形中都会包含 +c 的那个数，可以先回忆一下二维前缀和怎么求，基本公式是s [ i ] [ j ] = s [ i - 1] [ j ] + s[ i ] [ j - 1] - s [ i - 1] [ j - 1] + a [ i ] [ j ]这里我们需要类比前面插入 c 的方式，把 a 数组里面的数看成插入 c ，我们具体看代码分析一下。]]></description><category></category></item><item><title><![CDATA[差分问题----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145784063</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145784063</guid><author>H_begin</author><pubDate>Fri, 21 Feb 2025 19:24:07 +0800</pubDate><description><![CDATA[在前缀和问题中，我们是把原有数组变为前缀和数组，而在差分中，我们要构造一个数组，使原有数组是这个数组的前缀和数组。举例来说，设题设中读入的数组是a [ i ]，构造的数组是b [ i ] ，那么有 b [ 1 ] = a [ 1 ], b [ 2 ] = a [ 2 ] - a [ 1 ], b [ 3 ] = a [ 3 ] - a [ 2 ].......我们按照前缀和的方式把 b 数组加起来就发现最后会得到 a 数组。接下来 m 行，每行包含三个整数 l，r，c表示一个操作。]]></description><category></category></item><item><title><![CDATA[二维前缀和_子矩阵的和问题————个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145715932</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145715932</guid><author>H_begin</author><pubDate>Tue, 18 Feb 2025 22:29:16 +0800</pubDate><description><![CDATA[假如我们要求图b在粉色方块中的数之和，我们看到图c，这个矩形其实等于左上角所有涂色的框 减去 最左边涂色的一列 和 最上边涂色的一行 加上 左上角减了两次的那一个方块。首先我们是从左到右一行一行处理的，当只处理一行的时候其实是一位的前缀和数组，但关键是到第二行如何处理。输入一个 n 行 m 列的整数矩阵，再输入 q 个询问，每个询问包含四个整数 x1,y1,x2,y2，表示一个子矩阵的左上角坐标和右下角坐标。因为是从1开始计数的，第0行和第0列的数都是0，所以这个公式每一行都是适用的。]]></description><category></category></item><item><title><![CDATA[高精度除法----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145535818</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145535818</guid><author>H_begin</author><pubDate>Sun, 09 Feb 2025 19:28:13 +0800</pubDate><description><![CDATA[前面的高精度都是逆序存储，但是这里除法不存在进位借位问题，其实不必要逆序但是一道题中不一定只有除法，所以为了和前面的统一这里除法也采用逆序存储，算法逻辑也是模拟正常除法算式运算。而且这里仅讨论高精度除以低精度的除法情况。题目要求：给定两个非负整数（不含前导 0）A，B请你计算 A/B的商和余数。]]></description><category></category></item><item><title><![CDATA[高精度乘法模板----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145522430</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145522430</guid><author>H_begin</author><pubDate>Sat, 08 Feb 2025 20:47:21 +0800</pubDate><description><![CDATA[这里我们用 i 遍历 A 的每一位，当 A 没有被遍历完 且 最后没有进位时我们进行循环，循环如下。先判断A是否遍历完，因为在A遍历完但进位没有解决时也会进入循环所以在此需要判断，然后 t 存储本位运算的结果，存储 t 取模10后的结果，再自身除以10存储进位情况。用两层循环遍历两个数，将个位视为第零位十位视为第二位以此类推，C[i+j] += A[i] * B[j]是将对应位相乘结果相加并存在相应位上，这个可以举具体实例模拟一下就清楚了，最后处理进位的方式与前面高精度乘低精度类似就不赘述了。]]></description><category></category></item><item><title><![CDATA[高精度减法模板----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145497052</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145497052</guid><author>H_begin</author><pubDate>Fri, 07 Feb 2025 16:27:39 +0800</pubDate><description><![CDATA[首先是结果有是负数的情况，我们再计算这种情况时通常是令大数减去小数再加一个负号，因此我们首先我们需要比较两个数的大小，如果是较小的数减去较大的数就需要先输出一个负号，然后变成常规的较大数减去较小数。首先A是较大数，先加上A再减去上次借位的结果 t ，而B是较小数，可能会存在本位上没有数的情况，因此先判断B在第 i 位上是否有数，如果有就减去。的函数，首先看两个数的位数是否相等，如果不相等则位数多者更大，否则从高位开始比较每一位数的大小，当本位上两数不相等时，数大者更大。存入，和高精度加法一样就不赘述了。]]></description><category></category></item><item><title><![CDATA[高精度加法模板----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145482434</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145482434</guid><author>H_begin</author><pubDate>Thu, 06 Feb 2025 21:53:47 +0800</pubDate><description><![CDATA[首先需要一个数组存储结果，且需要一个 t 表示每次本位要存的数，因此先初始化为0，从第0位开始计算，当两个数的位数还没有遍历完时进行如下循环，先判断第一个数位数是否遍历完，如果没有，就让 t 加上第一个数的第 i 位的数，第二个数同理。中的a[i] - ‘0’是将字符数组（或字符串）中的字符转换为对应的整数值的常见方法。对于C++的数据存储类型，int和long long都有一定的数字范围限制，而高精度运算的算法可以处理很长的数据，比如数字位数有十万的，而算法本质也是模拟小学学到的加法运算逻辑。]]></description><category></category></item><item><title><![CDATA[二分算法模板解决数的范围问题----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145461478</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145461478</guid><author>H_begin</author><pubDate>Wed, 05 Feb 2025 21:19:36 +0800</pubDate><description><![CDATA[当满足 l < r 的条件时我们进行如下操作，判断处于mid位置的数是否符合左半区的性质，如果符合说明它在红色区域且有可能位于边界点，那么我们就更新区间为 [ mid , r ]，否则便处于蓝色区域，那么我们就更新区间为 [ l , mid -1 ]。当满足 l < r 的条件时我们进行如下操作，判断处于mid位置的数是否符合右半区的性质，如果符合说明它在蓝色区域且有可能位于边界点，那么我们就更新区间为 [ l , mid ]，否则便处于红色区域，那么我们就更新区间为 [ mid + 1 , r ]。]]></description><category></category></item><item><title><![CDATA[逆序对问题——归并排序做法(个人学习总结.C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145444482</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145444482</guid><author>H_begin</author><pubDate>Tue, 04 Feb 2025 21:02:45 +0800</pubDate><description><![CDATA[对于数列的第 i 个和第 j 个元素，如果满足 i<j 且 a[i]>a[j]，则其为一个逆序对，否则不是。简而言之就是数列中靠前的数要比靠后的数大，那么这两个数可以组成一个逆序对。]]></description><category></category></item><item><title><![CDATA[归并排序----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145433233</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145433233</guid><author>H_begin</author><pubDate>Mon, 03 Feb 2025 21:19:12 +0800</pubDate><description><![CDATA[当左右边界重合相遇时停止。2.]]></description><category></category></item><item><title><![CDATA[快速排序----个人学习总结(C++)]]></title><link>https://blog.youkuaiyun.com/H_begin/article/details/145422353</link><guid>https://blog.youkuaiyun.com/H_begin/article/details/145422353</guid><author>H_begin</author><pubDate>Sun, 02 Feb 2025 20:50:30 +0800</pubDate><description><![CDATA[不清楚的地方一般模拟一下就十分明朗了。]]></description><category></category></item></channel></rss>