<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mvufi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mvufi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mvufi]]></copyright><item><title><![CDATA[day31 第八章 贪心算法 part05]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/147607337</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/147607337</guid><author>mvufi</author><pubDate>Tue, 29 Apr 2025 16:31:41 +0800</pubDate><description><![CDATA["本题只要想清楚个例，例如98，一旦出现strNum[i - 1] > strNum[i]的情况（非单调递增），首先想让strNum[i - 1]减一，strNum[i]赋值9，这样这个整数就是89。就可以很自然想到对应的贪心解法了。最后代码实现的时候，也需要一些技巧，例如用一个flag来标记从哪里开始赋值9。" ---《代码随想录》思路：监控都不在叶子节点，所以从底向上遍历，后序遍历，分3种情况，最后根节点也要判断一下。想到了贪心，还要考虑遍历顺序，只有从后向前遍历才能重复利用上次比较的结果。]]></description><category></category></item><item><title><![CDATA[day30 第八章 贪心算法 part04 ]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/147224585</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/147224585</guid><author>mvufi</author><pubDate>Mon, 14 Apr 2025 23:10:49 +0800</pubDate><description><![CDATA[先准备一下每个字母的最大位置，以便后续继续计算。452. 用最少数量的箭引爆气球。435. 无重叠区间。763.划分字母区间。先排序，再算重叠区间。]]></description><category></category></item><item><title><![CDATA[day29 第八章 贪心算法 part03]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/147121483</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/147121483</guid><author>mvufi</author><pubDate>Mon, 14 Apr 2025 15:38:21 +0800</pubDate><description><![CDATA[i从0开始累加rest[i]，和记为curSum，一旦curSum小于零，说明[0, i]区间都不能作为起始位置，因为这个区间选择任何一个位置作为起点，到i这里都会断油，那么起始位置从i+1算起，再从0计算curSum。“可以换一个思路，首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈，说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。每个加油站的剩余量rest[i]为gas[i] - cost[i]。要注意语言，尽量深耕一门语言。406.根据身高重建队列。]]></description><category></category></item><item><title><![CDATA[python进制转换]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146443130</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146443130</guid><author>mvufi</author><pubDate>Sat, 22 Mar 2025 17:16:28 +0800</pubDate><description><![CDATA[a = int(input(),2/8/16) 表示input()是几进制。bin(a)/oct(a)/dex(a) 表示十进制转2/8/16进制。]]></description><category></category></item><item><title><![CDATA[判断质数与合数]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146355894</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146355894</guid><author>mvufi</author><pubDate>Tue, 18 Mar 2025 23:58:47 +0800</pubDate><description><![CDATA[判断质数与合数的逻辑很相似，都是判断一个属除了1和它本身，能不能被其他数整除。质数除了2，3，能表示为6k+-1(k=1,2,...)质数2，3，5，7，11，13，.....规则）和范围优化（只检查到。），实现了高效的质数判断。该算法通过数学优化（]]></description><category></category></item><item><title><![CDATA[二分法总结]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146157821</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146157821</guid><author>mvufi</author><pubDate>Mon, 10 Mar 2025 16:36:28 +0800</pubDate><description><![CDATA[若非严格单调递增，不一定能保证找到第一次出现target的位置，但能保证能找到是否存在这个数。如果区间存在，找mid，判断大小，更新区间。若区间内单调递增，没有问题；]]></description><category></category></item><item><title><![CDATA[回溯问题总结]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146083622</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146083622</guid><author>mvufi</author><pubDate>Fri, 07 Mar 2025 00:41:43 +0800</pubDate><description><![CDATA[子集同一层有相同的元素，只算第一个，后面的都要去重。假设7xx7yyy，第一个7的子集树包括有xx7和没有xx7两种，没有xx7==7yyy，跟没有7xx一样。排列：没有start_index, 要从0开始；子集 = 每一层是组合问题，整棵树是子集问题。组合：用start_index。分割 = 组合+字符串判断。]]></description><category></category></item><item><title><![CDATA[day28 第八章 贪心算法 part02]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146022044</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146022044</guid><author>mvufi</author><pubDate>Wed, 05 Mar 2025 14:42:25 +0800</pubDate><description><![CDATA[按实际顺序从小到大排不好写代码，很长很烦。重点不是跳跃的方法而是可以跳跃的范围。1005.K次取反后最大化的数组和。122.买卖股票的最佳时机II。]]></description><category></category></item><item><title><![CDATA[day27 第八章 贪心算法 part01]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/146015833</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/146015833</guid><author>mvufi</author><pubDate>Tue, 04 Mar 2025 17:34:11 +0800</pubDate><description><![CDATA[山峰山谷，用贪心时间复杂度O(N)，prediff>=0/<=0是为了把0引入，开始计算，不然后面没法算。前面所有的最大和如果<0, 只能给后面带来降低，所以舍弃，从0开始。排序，以饼干为中心，从大到小算。]]></description><category></category></item><item><title><![CDATA[day25 第七章 回溯算法 part04]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145948804</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145948804</guid><author>mvufi</author><pubDate>Sun, 02 Mar 2025 11:15:22 +0800</pubDate><description><![CDATA[求子序列问题跟求子集问题很像，但原数组各元素的位置不变，所以去重只能去元素内容相同的，也就是用unordered_set，求子集可以排序，用数组就行；去掉递减的，是跟上一级比。排列跟组合的区别：used数组；去重：同层如果排列到相同的数字，就跳过。491.非递减子序列。]]></description><category></category></item><item><title><![CDATA[day24 第七章 回溯算法part03]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145934986</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145934986</guid><author>mvufi</author><pubDate>Sat, 01 Mar 2025 12:54:33 +0800</pubDate><description><![CDATA[横向遍历是组合的个数，纵向是如何组成组合，（去重：1.组合去重通过start_index从i/i+1开始；每一层是该长度所有组合的可能，如第一层，取元素[1,n]，第二层，如果取了1，从[2,n]，如果取了2，从[3,n]。子集问题，整棵树，直到没地方展开，实际数学问题是有n个数，每个数取或不取有两种方案，所有不重复的方案就是子集问题。纵向伸展，为了避免组合重复计数，start_index从i+1开始，这是指树的纵向递归。组合问题，长度k，看每一层取数，如果数一样就跳过。]]></description><category></category></item><item><title><![CDATA[day23 第七章 回溯算法part02]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145916404</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145916404</guid><author>mvufi</author><pubDate>Fri, 28 Feb 2025 17:32:37 +0800</pubDate><description><![CDATA[分割问题跟组合问题一样，都是重叠子问题+记录path。注意定义好分割的区间。剪枝从元素个数和元素和入手，元素和用排序+剪枝，都是在for的结束上做文章。不允许重复元素，startindex从i+1开始。允许重复元素startindex从i开始。递归，for内部，纵向便利，控制组合内元素如何构成。不同集合，index（可以用for，不用用回溯）for循环，横向遍历，控制组合不重复；同一个集合，startindex。]]></description><category></category></item><item><title><![CDATA[day22 第七章 回溯算法part01 ]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145913478</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145913478</guid><author>mvufi</author><pubDate>Thu, 27 Feb 2025 23:01:07 +0800</pubDate><description><![CDATA[cpp里string可以用push_back(), pop_back()，也可以直接+递归的每一层for就是我们想写的每一层for，用if(终止条件)控制循环层数。剪枝2：i<=9-(k-(path.size()+1))和上一题一样。回溯本质是暴力搜索，复杂度没有变化，只能通过剪枝来减小一些复杂度。，如path，该状态只记录当前，通过回撤来消除下一层的东西。有未知层for，for写不出来，所以用回溯，也就是递归。跟77.组合问题不同的是：总和+[1,9]map的key，value用，隔开。]]></description><category></category></item><item><title><![CDATA[day58 第十一章：图论part08]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145785952</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145785952</guid><author>mvufi</author><pubDate>Sun, 23 Feb 2025 20:26:07 +0800</pubDate><description><![CDATA[先找到入度为0的节点，把这些节点加入队列/结果，然后依次循环再找。不能处理负权重，贪心算法，minDist表示距离。dijkstra（朴素版）精讲。]]></description><category></category></item><item><title><![CDATA[day56 第十一章：图论part06]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145739274</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145739274</guid><author>mvufi</author><pubDate>Fri, 21 Feb 2025 21:19:55 +0800</pubDate><description><![CDATA[1.入度为2：看删哪条边可以形成树，而不是环（因为只有两种可能，一个树，一个环）其实只有一条边冗余，改为，如果两条边在同一个集合里，就输出，不然加入。2.没有入度为2的点：有向环，删最后形成环的那条。109.冗余连接II。]]></description><category></category></item><item><title><![CDATA[day57 第十一章：图论part07]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145759644</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145759644</guid><author>mvufi</author><pubDate>Fri, 21 Feb 2025 15:24:41 +0800</pubDate><description><![CDATA[对所有边从小到大排序，如果这条边的两头不在同一个集合里，result加入这条边，集合中也加入这两个点。minDist表示不是生成树上的点到生成树的最小距离。从顶点的角度，按照贪心算法，一个一个加入生成树。inTheTree表示是否是生成树上的点。1.选取距离最小的点加入生成树。2.更新minDist。kruskal算法精讲。]]></description><category></category></item><item><title><![CDATA[day55 第十一章：图论part05]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145736866</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145736866</guid><author>mvufi</author><pubDate>Wed, 19 Feb 2025 20:32:51 +0800</pubDate><description><![CDATA[背景：判断连通性，即两个元素是否在同一个集合里/如何将两个元素放入同一个集合里。cin变成join，前面要init()原理：一维数组，用father连根。两种优化方式：路径压缩，按秩合并。不需要grid，变成father。]]></description><category></category></item><item><title><![CDATA[day53 第十一章：图论part04]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145671421</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145671421</guid><author>mvufi</author><pubDate>Mon, 17 Feb 2025 00:58:38 +0800</pubDate><description><![CDATA[105.有向图的完全可达性。bfs: 求最短路径长度。]]></description><category></category></item><item><title><![CDATA[day52 第十一章：图论part03]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145609523</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145609523</guid><author>mvufi</author><pubDate>Sun, 16 Feb 2025 21:04:21 +0800</pubDate><description><![CDATA[dfs：两种写法：一种是进来之前就判断了，判断条件在dfs的for内部；另一种是进来没有判断，那么终止条件在dfs开头。bfs: 加进来的时候就变，不要等pop的时候再变。即两处append的地方，开头和for内部，都要同时加变化。dfs, bfs流程都差不多，主要看在图的处理上，怎么需要dfs，bfs。空间复杂度高了，可以不用新建一个list，而是把陆地改成2，dfs: 进入条件即退出条件，二者选一即可。，然后遍历，再把孤岛改成0，陆地改成1。101. 孤岛的总面积。104.建造最大岛屿。]]></description><category></category></item><item><title><![CDATA[day51 第十一章：图论part02]]></title><link>https://blog.youkuaiyun.com/mvufi/article/details/145536505</link><guid>https://blog.youkuaiyun.com/mvufi/article/details/145536505</guid><author>mvufi</author><pubDate>Thu, 13 Feb 2025 12:29:21 +0800</pubDate><description><![CDATA[每一块的上下左右都遍历过了之后，这块陆地就遍历完了。广搜用队列(deque)，100. 岛屿的最大面积。]]></description><category></category></item></channel></rss>