自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 并查集+例题

并查集是一种树形数据结构,实际使用数组进行存储,用于处理一些不相交集合的合并及查询问题。主要由find和join函数组成。find函数,查找结点的根结点//根节点返回 else return pre [ k ] = find(pre [ k ]);//为此树下的所有结点的父节点都设置成根节点,降低时间复杂度 }join函数,将两个不相交的树合并if(fa!并查集在经历过几轮查找和合并操作后时间复杂度会降到o(1)级别。P8654 [蓝桥杯 2017 国 C] 合根植物算是个模板题了。

2023-03-20 11:39:14 190

原创 原型模式,咩咩乱叫

原型模式(prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 值得注意的是在java中使用clone方法必须要实现Clonable接口,否则会抛出CloneNotSupportedException。 同时我们应该注意深拷贝和浅拷贝的区别,浅拷贝和深拷贝都会为我们开辟一个空间来存放对象,浅拷贝会复制基本数据类型的数据,对于对象数据类型的数据仅仅复制其指针,这种拷贝clone函数可以帮我们完成。深拷贝则需要我们自己开辟空间来存储对象数据类型。 以下内容来自此网站如果你需要

2022-06-13 23:20:16 188

原创 工厂方法模式、抽象工厂模式

工厂方法模式、抽象工厂模式

2022-06-13 10:59:38 252

原创 适配器模式

适配器模式

2022-06-12 23:39:28 149

原创 状态模式,身随心变

状态模式

2022-06-12 22:23:23 134

原创 组合模式、透明方式和安全方式

组合模式、透明方式、安全方式

2022-06-12 21:54:43 543

原创 观察者模式,触发联动

观察者模式、源-监听器模式、从属模式

2022-05-04 21:12:42 247

原创 状态压缩+dfs+背包

状态压缩dp,dfs,0-1背包,完全背包

2022-05-02 23:23:58 435

原创 建造者模式

什么是建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示 UML图 由Director类定义建造顺序,在ConcreteBuilder类中进行对象的细节建造(当然ConcreteBuilder类需要知道用户对对象的要求),通过多态增加代码的灵活性。 工厂方法等相似的设计模式都是直接返回一个完整的对象,如果对对象的要求更加细致使用建造者模式是一个很好的选择。 本质 分离整体构建和局部构建 小练习 对于txt文件,xml文件的构建是类似的,都需要文件头,文件体以及文件尾。 使

2022-04-27 21:00:37 306

原创 外观模式,一键拥有世界

什么是外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。 UML图 优缺点 优点: 1、屏蔽客户端与内部进行直接交互 2、复用性好 3、 缺点: 1、不满足开放封闭原则 应用场景 1、当客户程序与抽象类的实现部分之间存在很大的依赖性时 2、维护一个遗留的大型程序 3、希望包装隐藏系统 4、跟踪对系统的使用 本质 封装交互,简化调用 ...

2022-04-27 20:19:08 269

原创 学习总结-12138

写在前 这周是摆烂的一周。。。 题目总结 P1332 血色先锋队 直接从瘟疫源头广搜,如果点没搜过就标记一下进队,如果搜过并且瘟疫到此点的时间大于这次到此点的时间进队。 #include <bits/stdc++.h> #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

2022-04-24 21:25:36 358 2

原创 深搜+回溯+广搜小结

深搜 按照一定的顺序和规则,一直往深处走,直到走不通再返回,换一种路径重复上述步骤。 深搜一般可以找到问题的所有答案,但问题规模较大时,会产生很多结果,时间复杂度就会较高。与广搜相比,深搜的空间复杂度会较低,因为深搜是深度优先,不需要像广搜那样存储大量状态。 优化 1、可行性剪枝和最优性剪枝 2、记忆化搜索 3、减少重复搜索 问题练习 P1451 求细胞数量 深搜的入门题,求出连通块,把搜索过的地方做标记,记录连通块数量即可 #include <bits/stdc++.h> #define ep

2022-04-19 10:47:03 1492 1

原创 代理模式-proxy

代理模式

2022-04-13 21:35:18 325 1

原创 二分答案算法

P1182 数列分段 Section II 一开始想的是每次把最大的数列段分成两段,很遗憾思路不正确。然后看了题解,dalao们用的都是二分答案来写的。 答案:即题目的答案的所有可能取值,对这个题来说答案最小值就是整个数列的最大值,答案的最大值就是整个数列 二分:是一种减少时间复杂度的方法,每次舍弃一半不符合要求的答案。直接从答案最小值遍历到最大值也是可以的,只是会TLE~~。 感觉这是一种很模板化的方法,只需要找出答案的可能的取值,判断即可。 //注释的代码是最开始的想法 #include <bit

2022-04-11 22:19:01 281

原创 贪心学习小结-12138

贪心 贪心算法所做的选择可以依赖于之前所做的选择,但绝不依赖未来的选择。贪心必须对每个子问题的解都做当前最好的选择,而不关心未来的选择;动态规划则会根据之前的结果对当前进行选择。 贪心是自顶向下的方式进行。 贪心策略的确定: 1、根据经验 2、根据结果回推前几步,用数学归纳法找出贪心策略 添加链接描述 题目小结 混合牛奶 就是一个贪心背包问题,先买奶便宜量大的,排序即可 #include <bits/stdc++.h> #define eps 1e-15 using namespace std;

2022-04-11 22:04:54 3391

原创 装饰模式-你猜我到底有多少种能力

什么是装饰模式 动态地给一个类添加一些额外的职责,就拿添加功能来说,装饰模式比生成子类更为灵活 UML图 图片来自网络 优缺点分析 优点: 1、将类的核心职责与装饰功能分开 2、客户端代码可以有选择,有层次的使用装饰功能来包装对象 3、减少类的复杂性 缺点: 1、容易产生很多细粒度对象 与策略模式对比 策略模式改变的是对象的核心,装饰模式改变的是对象的外壳。 策略模式是一层调用,装饰模式可以递归调用。 小测验 UML图 采用装饰模式完成奖金的分发,对于奖金的计算,使用策略模式实现奖金计算。 代码实现:

2022-04-07 21:31:41 177

原创 七大设计原则

依赖倒转原则 1、高层模块不应该依赖低层模块,两者都应该依赖抽象。 2、抽象不应该依赖细节,细节应该依赖抽象。 通俗来讲,不依赖抽象,就意味着将高层模块与低层模块绑在了一起,二高层模块与底层模块都对应着具体实现,如果想要更改需求就必须拆开后更改。但这是让人不悦。 里氏代换原则 子类必须能改替换父类,并且程序的运行不出现改变,这样才能进行扩展。 dalao博客 单一职责原则 一个类应该只有一个引起它变化的原因。 即类的功能应该尽可能细分。 开放-封闭原则 对扩展开放,对修改封闭。想要好好实现这个原则,就必须遵

2022-04-07 12:31:41 113

原创 策略模式-多重变换,灵活选择

什么是策略模式 它定义了算法家族,分别封装起来,让他们之间可以互相替换,次模式算法的改变不会影响受用算法的客户,却可以让客户自由的选择具体使用那个算法实现。 UML图 Context(CashContext)类:维护Strategy(CashiSuper)类的一个引用,也是调用算法的类。 Strategy类:可以是一个抽象类或接口,定义了是所有算法的公共接口。 ConcreteStrategy(CashNomal等):定义了算法的具体实现。 使用场景 如果对于一个需求,有多种不同的实现方法,或需要经常进行

2022-04-07 11:55:53 267

原创 动态规划学习小结-12138

线性动态规划 最长单调递增子序列 题意:对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). #include <bits/stdc++.h> #define e

2022-04-02 22:20:54 417

原创 ZOJ1149 Dividing

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

2022-04-02 21:33:34 602

原创 p2196 挖地雷

题目描述 在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入格式 有若干行。 第1行只有一个数字,表示地窖的个数N。 第2行有N个数,分别表示每个地窖中的地雷个数。 第3行至第N+1N+1行表示地窖之间的连接情况: 第3行有n−1个数(0或1),表示第一个地

2022-04-02 21:13:05 220

原创 p1434 滑雪

题目描述 Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点滑向上下左右相邻四个点之一,当且

2022-04-02 21:06:54 159

原创 P1020 导弹拦截

注:本题只写了o(n2)的时间复杂度 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是\le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 输入格式 1行,若干个

2022-04-02 20:58:02 149

原创 java数组的存储

当定义一个数组时: int[] a;此时会在栈内存中开辟空间存放a a=new int[3];此时会在堆内存中开辟长度为3的空间,使a指向第一个空间 如果a=null那么堆中的空间会被回收,此时使用a会出现NullPointerException 空指针异常 如果int[] b=a,并不会为b数组开辟空间,b会直接指向已经开辟的空间,此时如果想的是只赋值给b就会出现与实际认为不符的结果 ...

2021-10-25 21:43:41 365

原创 顺序线性表

声明 class seqlist{ private: int length;//长度 int data[Maxsize];//数据域 public: seqlist();//无参构造函数 seqlist(int a[],int n);//有参构造函数 ~seqlist(){};//析构函数,可写可不写 int Length();//获得长度 int Get(int i);//按位获取 int Locate(int x);//按值获取,返回位置

2021-10-10 22:14:51 153 2

原创 最长回文串,暴力+动规+中心扩展

题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。

2021-08-26 21:10:40 138

原创 简单数据库选课

封装 package liu; import java.sql.*; public class DBCUtil { //加载驱动 static { try { Class.forName("com.mysql.jdbc.Driver"); }catch (Exception e) { e.printStackTrace(); } } //获取数据库链接 public static Connection getConnection(String url,String user,String paw)

2021-08-18 10:08:59 157

原创 mysql学习笔记二

select语句 基本语法: select [ALL|DISTINCT|DISTINCTROW|TOP] 字段名/* [as 别名] from 表名 [as 别名] [inner join/left join/right join] --一般用on进行联表查询的判定 [where ...] --查询结果满足的条件 [group by...] --查询结果分组的条件 [having ...] ---一般于group by连用,进行分组后筛选 [order by 字段名 [asc/desc]]

2021-08-18 10:05:57 112

原创 mysql学习记录第一部分

mysql学习记录 数据库分类 关系型数据库sql包括:mysql,oracle,sql server,db2,SQLlite 通过表和表之间,行和列之间的关系进行存储。 非关系型数据库包括:redis,MongDB 根据对象的属性存储 数据库命令 mysql -u root -p123456——连接数据库 update mysql.user set authentication_string=password('123456') where user='root' and host='

2021-08-09 21:04:39 136

原创 第六周学习总结

感悟 这周打了几场cf上div3,div2的比赛,每次的情况都不好,感觉自己到达了一个瓶颈,div3能出两题,而div2就只能出一个题,每次的b都有好多情况自己考虑不到,况且这还是在没有涉及算法的情况下。在这周打div3的时候又出现了一个小插曲,b题提交了n次一直wa,检查了10多分钟也没看出哪里有问题,于是就问室友看了看他的代码,发现思路没什么不同,就直接提交了他的,于是最后被查出来了。第二天我又看了看那个题,发现只是因为将整型数组定义成了字符型数组,造成测试数据过大出现wa。最近在做vj上动态规划题的时

2021-04-17 17:26:57 251

原创 第五周学习总结

感想:这两周主要学习了简单动态规划,但学习态度没有之前那么端正了,更是有点想放弃了,这两周的状态也一直不太好,总感觉太累了,但其实又没有比别人做太多的事,心中也一直在焦虑。做题也是调简单的做,但我感觉这样进步是很小的。新的一周吧,打个鸡血,继续努力,不要畏惧困难的题,也不要小觑简单的题,充分利用课堂时间,平衡其他学科的学习。 代码小技巧: 1.像一些很大的二维数组可以定义成全局变量,否则会出现一些错误。 2.初始化函数:memset(数组名,初始值,sizeof(数组名)),速度很快,可以节省很多的时间。头

2021-04-10 16:34:45 173

原创 第三周学习总结

感悟 这一周打了第一次codeforces的比赛,有很多体会。第一次打比赛有一点慌,前半个小时都平静不下来,最后平静下来以后又没有找准方向,A题就是个找规律的题,不是很难,但一开始只找到了行的规律对于列就像用循环来解决于是超时了,这个问题以后要改正,只要是能找到规律的问题就找规律,不要去投机取巧。由于这个问题以及知识不扎实的原因最后就只A了一道题。还有就是在vj上做题,总会没有思路,找不准方向,以及程序本身出现的逻辑问题,一天就只能AC一到二个题。但经过三个周的学习已经感觉到自己进步很多了,想问题的思路也有

2021-03-27 21:13:21 127

原创 贪心-G

题目描述 The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made a plan to reform its

2021-03-20 18:50:27 180

原创 第二周学习总结

学习内容 贪心算法的分类 类中的构造函数以及new和delete 感悟 贪心算法 1:追求最大利润 这种题目的一般会有利润和时间两个变量:解决思想一般是两种,第一种是求出最大的平均利润,第二种是按价格排序追求最大利润。 在本周所做的B题属于第二种,每个商品都有最晚卖出时间与利润,每天只能卖一个商品,而我在这个题中一开没读懂题意,认为每个商品只能在规定当天卖出,浪费了很多时间。 主要思路:先将他们按价格排序,保证每次卖出的商品都是当前多能卖出商品的最大值。 主要代码: for(i=1;i<=n1;i

2021-03-20 18:40:33 317

原创 第一周总结

第一周总结 新知识: 1:STL简单应用 2:运算符重载 3:简单的构造函数和析构函数 4:cin输入存在返回值,可以配合循环使用 详情: STL简单应用:  1.string字符串类型:将字符串定义成一个新的数据类型,使得其能够和其他基本数据类型相识,可以进行运算。 基本操作: s.empty() //s为空返回true,否则返回false. s.size() //返回s中字符的个数。 s.c_str() //返回字符串对应位置的首地址 2.栈(stack)<stack>:只能操作顶端元素,先

2021-03-13 22:39:12 109

原创 细菌的繁殖与扩散 求助

题目描述 在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n天后,细菌在培养皿中的分布情况。 输入格式 输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。 输入样例 2 1 输出样例 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0

2021-01-20 12:30:08 400 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除