自定义博客皮肤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 88

原创 原型模式,咩咩乱叫

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

2022-06-13 23:20:16 86

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

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

2022-06-13 10:59:38 107

原创 适配器模式

适配器模式

2022-06-12 23:39:28 71

原创 状态模式,身随心变

状态模式

2022-06-12 22:23:23 64

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

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

2022-06-12 21:54:43 341

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

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

2022-05-04 21:12:42 132

原创 状态压缩+dfs+背包

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

2022-05-02 23:23:58 314

原创 建造者模式

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

2022-04-27 21:00:37 204

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

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

2022-04-27 20:19:08 190

原创 学习总结-12138

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

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

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

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

原创 代理模式-proxy

代理模式

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

原创 二分答案算法

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

2022-04-11 22:19:01 159

原创 贪心学习小结-12138

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

2022-04-11 22:04:54 3249

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

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

2022-04-07 21:31:41 79

原创 七大设计原则

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

2022-04-07 12:31:41 50

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

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

2022-04-07 11:55:53 173

原创 动态规划学习小结-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 239

原创 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 465

原创 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 126

原创 p1434 滑雪

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

2022-04-02 21:06:54 70

原创 P1020 导弹拦截

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

2022-04-02 20:58:02 71

原创 java数组的存储

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

2021-10-25 21:43:41 277

原创 顺序线性表

声明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 62 2

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

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

2021-08-26 21:10:40 46

原创 简单数据库选课

封装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 81

原创 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 47

原创 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 61

原创 第六周学习总结

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

2021-04-17 17:26:57 171

原创 第五周学习总结

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

2021-04-10 16:34:45 101

原创 第三周学习总结

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

2021-03-27 21:13:21 60

原创 贪心-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 98

原创 第二周学习总结

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

2021-03-20 18:40:33 176

原创 第一周总结

第一周总结新知识: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 44

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

题目描述在边长为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 258 1

空空如也

空空如也

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

TA关注的人

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