<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BOSS站着我躺着]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_51370197</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_51370197]]></copyright><item><title><![CDATA[并查集+例题]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/129663873</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/129663873</guid><author>m0_51370197</author><pubDate>Mon, 20 Mar 2023 11:39:14 +0800</pubDate><description><![CDATA[并查集是一种树形数据结构，实际使用数组进行存储，用于处理一些不相交集合的合并及查询问题。主要由find和join函数组成。find函数，查找结点的根结点//根节点返回 else return pre [ k ] = find(pre [ k ]);//为此树下的所有结点的父节点都设置成根节点，降低时间复杂度 }join函数，将两个不相交的树合并if(fa!并查集在经历过几轮查找和合并操作后时间复杂度会降到o(1)级别。P8654 [蓝桥杯 2017 国 C] 合根植物算是个模板题了。]]></description><category></category></item><item><title><![CDATA[原型模式，咩咩乱叫]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/125257118</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/125257118</guid><author>m0_51370197</author><pubDate>Mon, 13 Jun 2022 23:20:16 +0800</pubDate><description><![CDATA[原型模式（prototype）：用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象


值得注意的是在java中使用clone方法必须要实现Clonable接口，否则会抛出CloneNotSupportedException。
同时我们应该注意深拷贝和浅拷贝的区别，浅拷贝和深拷贝都会为我们开辟一个空间来存放对象，浅拷贝会复制基本数据类型的数据，对于对象数据类型的数据仅仅复制其指针，这种拷贝clone函数可以帮我们完成。深拷贝则需要我们自己开辟空间来存储对象数据类型。
以下内容来自此网站如果你需要]]></description><category></category></item><item><title><![CDATA[工厂方法模式、抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/125255245</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/125255245</guid><author>m0_51370197</author><pubDate>Mon, 13 Jun 2022 10:59:38 +0800</pubDate><description><![CDATA[工厂方法模式、抽象工厂模式]]></description><category></category></item><item><title><![CDATA[适配器模式]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/125251871</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/125251871</guid><author>m0_51370197</author><pubDate>Sun, 12 Jun 2022 23:39:28 +0800</pubDate><description><![CDATA[适配器模式]]></description><category></category></item><item><title><![CDATA[状态模式，身随心变]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/125250923</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/125250923</guid><author>m0_51370197</author><pubDate>Sun, 12 Jun 2022 22:23:23 +0800</pubDate><description><![CDATA[状态模式]]></description><category></category></item><item><title><![CDATA[组合模式、透明方式和安全方式]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/125250189</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/125250189</guid><author>m0_51370197</author><pubDate>Sun, 12 Jun 2022 21:54:43 +0800</pubDate><description><![CDATA[组合模式、透明方式、安全方式]]></description><category></category></item><item><title><![CDATA[观察者模式，触发联动]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124577170</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124577170</guid><author>m0_51370197</author><pubDate>Wed, 04 May 2022 21:12:42 +0800</pubDate><description><![CDATA[观察者模式、源-监听器模式、从属模式]]></description><category></category></item><item><title><![CDATA[状态压缩+dfs+背包]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124548037</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124548037</guid><author>m0_51370197</author><pubDate>Mon, 02 May 2022 23:23:58 +0800</pubDate><description><![CDATA[状态压缩dp，dfs，0-1背包，完全背包]]></description><category></category></item><item><title><![CDATA[建造者模式]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124460001</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124460001</guid><author>m0_51370197</author><pubDate>Wed, 27 Apr 2022 21:00:37 +0800</pubDate><description><![CDATA[什么是建造者模式
将一个复杂对象的构建与它的表示分离，使得同样的建造过程可以创建不同的表示
UML图

由Director类定义建造顺序，在ConcreteBuilder类中进行对象的细节建造（当然ConcreteBuilder类需要知道用户对对象的要求），通过多态增加代码的灵活性。
工厂方法等相似的设计模式都是直接返回一个完整的对象，如果对对象的要求更加细致使用建造者模式是一个很好的选择。
本质
分离整体构建和局部构建
小练习
对于txt文件，xml文件的构建是类似的，都需要文件头，文件体以及文件尾。
使]]></description><category></category></item><item><title><![CDATA[外观模式，一键拥有世界]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124459469</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124459469</guid><author>m0_51370197</author><pubDate>Wed, 27 Apr 2022 20:19:08 +0800</pubDate><description><![CDATA[什么是外观模式
为子系统中的一组接口提供一个一致的界面，此模式定义了一个高层接口，这个接口使得这个子系统更加容易使用。
UML图

优缺点
优点：
1、屏蔽客户端与内部进行直接交互
2、复用性好
3、
缺点：
1、不满足开放封闭原则
应用场景
1、当客户程序与抽象类的实现部分之间存在很大的依赖性时
2、维护一个遗留的大型程序
3、希望包装隐藏系统
4、跟踪对系统的使用
本质
封装交互，简化调用

...]]></description><category></category></item><item><title><![CDATA[学习总结-12138]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124391358</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124391358</guid><author>m0_51370197</author><pubDate>Sun, 24 Apr 2022 21:25:36 +0800</pubDate><description><![CDATA[写在前
这周是摆烂的一周。。。
题目总结
P1332 血色先锋队
直接从瘟疫源头广搜，如果点没搜过就标记一下进队，如果搜过并且瘟疫到此点的时间大于这次到此点的时间进队。

#include &lt;bits/stdc++.h&gt;
#define eps 1e-15
using namespace std;
int a[505][505],visit[505][505],nx[4]={-1,1,0,0},ny[4]={0,0,-1,1};
int main()
{
    int n,m,n1,n2,t1]]></description><category></category></item><item><title><![CDATA[深搜+回溯+广搜小结]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124265607</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124265607</guid><author>m0_51370197</author><pubDate>Tue, 19 Apr 2022 10:47:03 +0800</pubDate><description><![CDATA[深搜
按照一定的顺序和规则，一直往深处走，直到走不通再返回，换一种路径重复上述步骤。
深搜一般可以找到问题的所有答案，但问题规模较大时，会产生很多结果，时间复杂度就会较高。与广搜相比，深搜的空间复杂度会较低，因为深搜是深度优先，不需要像广搜那样存储大量状态。
优化
1、可行性剪枝和最优性剪枝
2、记忆化搜索
3、减少重复搜索
问题练习
P1451 求细胞数量
深搜的入门题，求出连通块，把搜索过的地方做标记，记录连通块数量即可
#include &lt;bits/stdc++.h&gt;
#define ep]]></description><category></category></item><item><title><![CDATA[代理模式-proxy]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124158483</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124158483</guid><author>m0_51370197</author><pubDate>Wed, 13 Apr 2022 21:35:18 +0800</pubDate><description><![CDATA[代理模式]]></description><category></category></item><item><title><![CDATA[二分答案算法]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124111086</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124111086</guid><author>m0_51370197</author><pubDate>Mon, 11 Apr 2022 22:19:01 +0800</pubDate><description><![CDATA[P1182 数列分段 Section II
一开始想的是每次把最大的数列段分成两段，很遗憾思路不正确。然后看了题解，dalao们用的都是二分答案来写的。
答案：即题目的答案的所有可能取值，对这个题来说答案最小值就是整个数列的最大值，答案的最大值就是整个数列
二分：是一种减少时间复杂度的方法，每次舍弃一半不符合要求的答案。直接从答案最小值遍历到最大值也是可以的，只是会TLE~~。
感觉这是一种很模板化的方法，只需要找出答案的可能的取值，判断即可。
//注释的代码是最开始的想法
#include &lt;bit]]></description><category></category></item><item><title><![CDATA[贪心学习小结-12138]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124108461</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124108461</guid><author>m0_51370197</author><pubDate>Mon, 11 Apr 2022 22:04:54 +0800</pubDate><description><![CDATA[贪心
贪心算法所做的选择可以依赖于之前所做的选择，但绝不依赖未来的选择。贪心必须对每个子问题的解都做当前最好的选择，而不关心未来的选择；动态规划则会根据之前的结果对当前进行选择。
贪心是自顶向下的方式进行。
贪心策略的确定：
1、根据经验
2、根据结果回推前几步，用数学归纳法找出贪心策略 添加链接描述
题目小结
混合牛奶
就是一个贪心背包问题，先买奶便宜量大的，排序即可
#include &lt;bits/stdc++.h&gt;
#define eps 1e-15
using namespace std;]]></description><category></category></item><item><title><![CDATA[装饰模式-你猜我到底有多少种能力]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124026837</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124026837</guid><author>m0_51370197</author><pubDate>Thu, 07 Apr 2022 21:31:41 +0800</pubDate><description><![CDATA[什么是装饰模式
动态地给一个类添加一些额外的职责，就拿添加功能来说，装饰模式比生成子类更为灵活
UML图
图片来自网络

优缺点分析
优点：
1、将类的核心职责与装饰功能分开
2、客户端代码可以有选择，有层次的使用装饰功能来包装对象
3、减少类的复杂性
缺点：
1、容易产生很多细粒度对象
与策略模式对比
策略模式改变的是对象的核心，装饰模式改变的是对象的外壳。
策略模式是一层调用，装饰模式可以递归调用。
小测验

UML图

采用装饰模式完成奖金的分发，对于奖金的计算，使用策略模式实现奖金计算。
代码实现：]]></description><category></category></item><item><title><![CDATA[七大设计原则]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124011998</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124011998</guid><author>m0_51370197</author><pubDate>Thu, 07 Apr 2022 12:31:41 +0800</pubDate><description><![CDATA[依赖倒转原则
1、高层模块不应该依赖低层模块，两者都应该依赖抽象。
2、抽象不应该依赖细节，细节应该依赖抽象。
通俗来讲，不依赖抽象，就意味着将高层模块与低层模块绑在了一起，二高层模块与底层模块都对应着具体实现，如果想要更改需求就必须拆开后更改。但这是让人不悦。
里氏代换原则
子类必须能改替换父类，并且程序的运行不出现改变，这样才能进行扩展。
dalao博客
单一职责原则
一个类应该只有一个引起它变化的原因。
即类的功能应该尽可能细分。
开放-封闭原则
对扩展开放，对修改封闭。想要好好实现这个原则，就必须遵]]></description><category></category></item><item><title><![CDATA[策略模式-多重变换，灵活选择]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/124010874</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/124010874</guid><author>m0_51370197</author><pubDate>Thu, 07 Apr 2022 11:55:53 +0800</pubDate><description><![CDATA[什么是策略模式
它定义了算法家族，分别封装起来，让他们之间可以互相替换，次模式算法的改变不会影响受用算法的客户，却可以让客户自由的选择具体使用那个算法实现。
UML图

Context（CashContext）类：维护Strategy（CashiSuper）类的一个引用，也是调用算法的类。
Strategy类：可以是一个抽象类或接口，定义了是所有算法的公共接口。
ConcreteStrategy（CashNomal等）:定义了算法的具体实现。
使用场景
如果对于一个需求，有多种不同的实现方法，或需要经常进行]]></description><category></category></item><item><title><![CDATA[动态规划学习小结-12138]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/123908727</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/123908727</guid><author>m0_51370197</author><pubDate>Sat, 02 Apr 2022 22:20:54 +0800</pubDate><description><![CDATA[线性动态规划
最长单调递增子序列
题意：对于给定的一个序列(a1, a2, …, aN)，我们可以得到一些上升的子序列(ai1, ai2, …, aiK)，这里1 &lt;= i1 &lt; i2 &lt; … &lt; iK &lt;= N。比如，对于序列(1, 7, 3, 5, 9, 4, 8)，有它的一些上升子序列，如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4，比如子序列(1, 3, 5, 8).
#include &lt;bits/stdc++.h&gt;
#define e]]></description><category></category></item><item><title><![CDATA[ZOJ1149 Dividing]]></title><link>https://blog.youkuaiyun.com/m0_51370197/article/details/123929171</link><guid>https://blog.youkuaiyun.com/m0_51370197/article/details/123929171</guid><author>m0_51370197</author><pubDate>Sat, 02 Apr 2022 21:33:34 +0800</pubDate><description><![CDATA[Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles had the same value, because then they could just split the collection ]]></description><category></category></item></channel></rss>