<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ares_moran的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ares_moran</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ares_moran]]></copyright><item><title><![CDATA[最小生成树]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/164335304</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/164335304</guid><author>Ares_moran</author><pubDate>Thu, 03 Sep 2026 18:45:35 +0800</pubDate><description><![CDATA[这是一个经典的算法，对于一个n个节点、多条边构成的无向图，我们要找到其中的n-1条边构成一棵树，使得其中每个点与点之间存在唯一通路，并使得这n-1条边总和最短。Kruskal算法和Prim算法是经典中的经典，前者是以边为维度考虑，后者是以点的纬度考虑。Kruskal适合大多数题目中求最小生成树的要求，但对于稠密图而言，比如说每个点之间都有一条可能的连线的情况，边的数量极大，但点的数量较少，此时可以使用Prim算法。]]></description><category></category></item><item><title><![CDATA[单源最短路径]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/164258451</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/164258451</guid><author>Ares_moran</author><pubDate>Tue, 01 Sep 2026 13:46:30 +0800</pubDate><description><![CDATA[算法描述：使用邻接表存储图，核心基于优先队列，先初始化起点到每个点的距离为INF，以图中的每个节点为维度，每次将距离当前集合最近的集合外节点u加入集合，并访问该点的其他相邻节点v，如果发现从u到v的距离比之前记录的要近，则更新dis[v]，并将v节点的数据加入到优先队列。解决的问题：在图中求得从一个点出发，到其他所有其他点的距离。时间复杂度：O((E+V)logE)使用场景：适用于边权为正的情况。]]></description><category></category></item><item><title><![CDATA[开发工具经典插件总结]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/139748602</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/139748602</guid><author>Ares_moran</author><pubDate>Mon, 17 Jun 2024 16:52:47 +0800</pubDate><description><![CDATA[lombok：提供一些常用注解，包括get\set方法等，导入pom自动安装jar包和插件。Free MyBatis Tool：mybatis相关的自动导航和内容生成。maven-search：搜索项目依赖Properties的gva。TONGYI lingma：阿里idea中可用的AI聊天工具。JBLJavaToWeb：自动生成javaWeb项目结构。Live Server：启动实时页面加载所用的服务器。]]></description><category></category></item><item><title><![CDATA[java框架技术xml文件存档]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/139716256</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/139716256</guid><author>Ares_moran</author><pubDate>Sun, 16 Jun 2024 10:20:49 +0800</pubDate><description><![CDATA[【代码】java框架技术xml文件存档。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第2198题——机房（LCA+dp）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/139193547</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/139193547</guid><author>Ares_moran</author><pubDate>Sat, 25 May 2024 10:36:47 +0800</pubDate><description><![CDATA[我们修改原LCA中返回最近公共祖先，将其改为返回总链路长度，我们基于原LCA中对a和b节点的跳跃，在其中添加对于dp的访问，由于总链路长度是x个点的度数和，而我们只计算了其中的x-1条边的长度，那么最后在返回答案时添加一个最近公共祖先节点的度数即可。定义dp[i][j]表示从节点i开始向上跳2的j次方步所经过的距离：dp[i][j] = dp[i][j-1] + dp[st[i][j-1]][j-1]对于第二个询问, 从 3 到 4 需要经过 3,1,2,4 所以时间和为 1+2+2+1=6。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第18481题——皇家守卫（单调栈+线段树）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/139086798</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/139086798</guid><author>Ares_moran</author><pubDate>Tue, 21 May 2024 11:03:20 +0800</pubDate><description><![CDATA[对于第 𝑖 座塔，若其右边存在某座塔 𝑗，满足：max⁡(ℎ𝑖,ℎ𝑖+1,ℎ𝑖+2,⋯,ℎ𝑗−1) < ℎ𝑗 则称第 𝑗 座塔为第 𝑖 座塔 "暸望塔"。这题的输入输出样例非常具有迷惑性，我们需要自行模拟两个瞭望塔各自高度不同的情况，A到B高度如样例一样单调递增的情况下，其公共瞭望塔的个数是B瞭望塔的个数；对于瞭望塔的定义，符合单调栈求解模板，即对于第i个塔，求其右边第一个比它高的塔，使用单调递减栈从后向前遍历，配合使用after数组记录栈内元素个数，即可得到瞭望塔个数。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第18489题——拔苗助长（质数+map）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/139072134</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/139072134</guid><author>Ares_moran</author><pubDate>Mon, 20 May 2024 18:49:46 +0800</pubDate><description><![CDATA[对质因数3来说，有一个x存在奇数个3。对于任意质因数p，任意两个数相乘的结果中p的个数为偶数，则说明两个数中的p的个数要么都是奇数，要么都是偶数；反过来说，如果存在任意两个数a和b，假设a的质因数2的个数为1个，那么b的质因数2的个数如果是偶数，则a和b相乘的结果必不可能是完全平方数。为了记录每一个x的每一个质因数的个数，我们可以使用Map数据结构，同时可以使用埃氏筛加快这个过程，我们筛选出log(N)以内所有质数逐一测试，如果在试除计算的最后没有变成1，则其本身就是一个质数，即自己的一个质因数。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第2357题——限高杆（多层图+dijkstra）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/138862415</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/138862415</guid><author>Ares_moran</author><pubDate>Tue, 14 May 2024 17:50:12 +0800</pubDate><description><![CDATA[最后，我们还要对不同层的同一个节点，即a1->a2、a2->a3、a1->a3的边权值置为0，因为有限高架的路径也可能非常不划算，这样设计就不必担心跨层必须要经过限高架的问题了，不经过限高架路段也可以免费跨层来到下层的结点。市长发现, 由于限高杆很多, 导致货车可能需要绕行才能往返于市场之间, 这使得货车在公路系统中的行驶路程变长, 增加了对公路系统的损耗, 增加了 能源的消耗, 同时还增加了环境污染。对于 50% 的评测样例, 2 ≤ 𝑛 ≤ 100,1 ≤ 𝑚 ≤ 1000,1 ≤ 𝑐 ≤ 1000。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第246题——矩阵计数（位与集合+状压dp）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/138721251</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/138721251</guid><author>Ares_moran</author><pubDate>Sat, 11 May 2024 17:05:26 +0800</pubDate><description><![CDATA[考虑到每一个格子的位置只有两种状态，以及题目数据规模较小，可以考虑到状态压缩dp思路，也可以通过位运算配合dfs排列组合进行验证。我们可以用位运算获得所有满足要求的行，即一行没有三个连续的1的所有情况，本题的关键也正是用位运算技巧代替X和O符号。定义dp[i][j][k]为，当前为第i行时，本行的合法状态为j，前一行的合法状态为k时的排列数。一个 N×M 的方格矩阵，每一个方格中包含一个字符 O 或者字符 X。输入一行包含两个整数 N,M (1≤N,M≤5)。输出一个整数代表答案。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第17169题——兽之泪II（二分+前缀和）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/138080075</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/138080075</guid><author>Ares_moran</author><pubDate>Mon, 22 Apr 2024 16:48:01 +0800</pubDate><description><![CDATA[这个方法错误的原因在于，对于一个较大的x，可能会有一个相当小的y，直白的说，帅怪的顺序可能是x1，x2，x5，y5，y5，y5……我们会考虑到遍历每组数据的所有x值，其比yi小的记录到cost里，但这种方式并不会超时，但是会有另外的问题：如果比yi小的x值数量已经满足n滴眼泪的要求，我们就需要提前返回最小的n个x值总和，如果是乱序的，每次从第一个x开始遍历，那么就无法找到不考虑y只考虑x的最小能量消耗情况（也就是只挑选部分怪兽打一次就够了的情况，无法计算出最小的x总和）在怪兽谷中，有 k 只怪兽。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第859题——旅行（最小生成树）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137837812</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137837812</guid><author>Ares_moran</author><pubDate>Tue, 16 Apr 2024 20:27:42 +0800</pubDate><description><![CDATA[Z 小镇是一个景色宜人的地方，吸引来自各地的观光客来此旅游观光。Z 小镇附近共有 n 个景点（编号为 1,2,3,…,n），这些景点被 m 条道路连接着，所有道路都是双向的，两个景点之间可能有多条道路。也许是为了保护该地的旅游资源，Z 小镇有个奇怪的规定，就是对于一条给定的公路 ri​，任何在该公路上行驶的车辆速度必须为 vi​。速度变化太快使得游客们很不舒服，因此从一个景点前往另一个景点的时候，大家都希望选择行使过程中最大速度和最小速度的比尽可能小的路线，也就是所谓最舒适的路线。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第2152题——红绿灯（线性dp）]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137685449</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137685449</guid><author>Ares_moran</author><pubDate>Fri, 12 Apr 2024 16:40:36 +0800</pubDate><description><![CDATA[, 达到瞬移的效果, 但是爱丽丝是遵纪守法的好市民, 在每个红绿灯前她都会停下氮气喷射, 即使是绿灯, 因为红绿灯处有斑马线, 而使用氮气喷射 装置通过斑马线是违法的。爱丽丝在最开始直接使用氮气喷射装置瞬间到达第一个红绿灯, 然后绿灯通过, 以最高速行进 60 秒后到达第二个红绿灯, 此时绿灯刚好变红, 于是她等 待 20 秒再次变为绿灯后通过该红绿灯, 此时氮气喷射装置冷却完毕, 爱丽丝再 次使用瞬间到达公司, 总共用时 80 秒。爱丽丝要开车去上班, 上班的路上有许多红绿灯, 这让爱丽丝很难过。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第1121题——蓝桥公园]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137401652</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137401652</guid><author>Ares_moran</author><pubDate>Fri, 05 Apr 2024 16:23:36 +0800</pubDate><description><![CDATA[这是一道典型的floyd算法模版题，floyd算法相当暴力，时间复杂度O(n^3)，适用于像这种只有小几百个点的情况，这种数据量我们不需要考虑其他算法，并且它可以一次计算出所有点到所有点的最短距离 ，对于多次查询的时间复杂度是O(1)。但是小明的体力有限，对于每个计划他想走最少的路完成，你可以帮帮他吗？如果要输出路径，则需要定义一个path数组，需要注意初始化的时候path[i][i] = i表示节点自己到自己的前置节点就是它自己，每连接一条边，都要将path数组做对应更新，最后使用dfs输出路径。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第793题——排水系统]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137277290</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137277290</guid><author>Ares_moran</author><pubDate>Tue, 02 Apr 2024 19:16:43 +0800</pubDate><description><![CDATA[每一个排水结点有若干个管道用于汇集其他排水结点的污水（简称为该结点的汇集管道），也有若干个管道向其他的排水结点排出污水（简称为该结点的排出管道）。排水系统中还有若干个最终排水口，它们将污水运送到污水处理厂，没有排出管道的结点便可视为一个最终排水口。其中体积使用分数形式进行输出，即每行输出两个用单个空格分隔的整数 p，q，表示排出的污水体积为。现在各个污水接收口分别都接收了 1 吨污水，污水进入每个结点后，会均等地从当前结点的每一个排出管道流向其他排水结点，而最终排水口将把污水排出系统。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第1593题——二进制问题]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137249163</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137249163</guid><author>Ares_moran</author><pubDate>Mon, 01 Apr 2024 23:03:43 +0800</pubDate><description><![CDATA[那么比111更大的数即代表着第一个数一定填1，在第二个区间中，我们是在第一个数填1的情况下，考虑第三个数不填1的排列数，即剩下1个位置填2个1满足要求——dp[1][2]。这样分的理由是，第一个数不填1，考虑剩下3个位置填3个1的方法总数，这不就正好是在000~111这个长度为3的二进制序列中填3个1的排列总数吗，即dp[3][3]。第三个区间考虑在第一个位置和第三个位置都填1的情况下，第四个位置不填1的情况，那么就要加上在剩下0个位置填1个1的组合数——dp[0][1]。输出一个整数表示答案。]]></description><category></category></item><item><title><![CDATA[统计数码出现的个数]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137227707</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137227707</guid><author>Ares_moran</author><pubDate>Mon, 01 Apr 2024 16:37:43 +0800</pubDate><description><![CDATA[上述算法基于[1, n]的数码数量，对于[n, m]之间的数码数量则可以先计算[1, m]和[1, n-1]，再在对应数码位上进行相减即可。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第131题——生命之树]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/137195343</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/137195343</guid><author>Ares_moran</author><pubDate>Sun, 31 Mar 2024 12:30:50 +0800</pubDate><description><![CDATA[上帝要在这棵树内选出一个非空节点集 S，使得对于 S 中的任意两个点 a,b，都存在一个点列 a,v1​,v2​,⋯,vk​,b 使得这个点列中的每个点都是 S 里面的元素，且序列中相邻两个点间有一条边相连。题目说对于集合S中任意的两个点，都存在一条能连起来的路径，指的是S中所有的点都能在其中加上S中别的点连起来，其实就是寻找一颗权值最大的子树，千万。这是一道经典的树形dp，树形dp是结合dfs与递推计算的解题手法，用于在树和图的结构中进行递推计算，该题就是一个经典的应用场景。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第642题——跳蚱蜢]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/136809971</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/136809971</guid><author>Ares_moran</author><pubDate>Mon, 18 Mar 2024 16:13:47 +0800</pubDate><description><![CDATA[在考虑单点bfs找最短路径的情况，我们可以想象原点是一颗由上至下的4叉树，那么题目的答案20，意味着我们要向下分出20层才能找到答案，树会不断往底部扩展，越是向下的层数，所需要计算的节点就越是多，如果我们没有去重，想象一个完整的20层4叉树，它是非常巨大的。所以我们考虑有哪些蚱蜢可以跳到空盘子上，进一步思考，就是空盘子可以与哪些蚱蜢交换位置，很明显，如图所示，0号空盘可以与2、1、8、7号蚱蜢交换位置，这就为我们提供了搜索路径的灵感；其中 8 只盘子内装着 8 只蚱蜢，有一个是空盘。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第1167题——荷马史诗]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/136711000</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/136711000</guid><author>Ares_moran</author><pubDate>Thu, 14 Mar 2024 17:59:03 +0800</pubDate><description><![CDATA[在这个地方我们尤其需要关注到一个细节，对于二叉树而言我们每次一定会选取两个节点不用担心这个问题，但对于k叉树，我们要尽量让叶子结点更靠近最终树的根结点，如果按照我们当前这样的设计由下至上的构建二叉树，就会让叶子结点聚到底端，使得每个单词所对应的k进制串都尽量的长，那么就违背题意和霍夫曼编码的初衷了。题目的描述很长，解释的有点过于多，但其实如果你是计算机专业的学生，知道霍夫曼编码，题目的内容就不难理解了，反之则不然，我仅在此处简单的对霍夫曼编码的关键部分进行讲述，具体内容读者可以去搜索相关资料。]]></description><category></category></item><item><title><![CDATA[蓝桥杯第1595题——和与乘积]]></title><link>https://blog.youkuaiyun.com/Ares_moran/article/details/136646506</link><guid>https://blog.youkuaiyun.com/Ares_moran/article/details/136646506</guid><author>Ares_moran</author><pubDate>Tue, 12 Mar 2024 12:16:59 +0800</pubDate><description><![CDATA[虽然我们可以考虑到使用大数类，但不妨我们考虑一下，如果满足要求的结果是区间积等于区间和，那么如果从某个时刻起，区间积已经比理论区间和的最大值还要大了，是不是就可以停下来了，那么不难发现，理论区间和最大值就是2e5 * 2e5。进一步思考，既然区间积的变化速度那么快，即便只有2，连续起来的增长速度也远超区间和的增长速度，而区间积的增长速度要想比区间和慢，使最终达到平衡，那就只有1这个值是满足要求的。符合条件的区间为 [1,1], [1,3], [2,2], [3,3], [3,4], [4,4]。]]></description><category></category></item></channel></rss>