自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 问答 (18)
  • 收藏
  • 关注

原创 Java核心技术 读书笔记

面向对象编程OOP是现在的主流,Java是完全面向对象的。OOP由对象构成,每个对象中有对用户公开的特定功能部分,也有隐藏的实现部分。结构化编程是先考虑算法的设计,再去考虑数据的存储方式。OOP则是先考虑数据的存储方式,再考虑操作数据的算法。使用Java中预先定义的Data类来介绍类的使用方法。现在介绍如何设计复杂应用程序所需要的各种主力类。这些类没有main方法,但是有自己的数据域和实例方法(实例方法不是静态方法)。这些类自己不能运行,通过设计的目的是被调用。

2023-09-06 20:49:11 435

原创 STL 笔记

改编自STL 分为 容器 迭代器 空间配置器 配接器 算法 和 仿函数命名空间用来解决名称冲突,比如Menci和Fuxey都在自己的头文件里面写了一个work()函数,如果我们需要同时使用这两个函数就会发生名称冲突,但是如果将这两个函数写在单独的命名空间内,就成了Menci::work()和Fuxey::work(),就不会发生命名冲突STL的所有内容都包含在std的命名空间内部如果要调...

2020-05-04 09:53:13 172 3

原创 链表 P309----P316)(单向链表的建立与输出,插入和删除)

采用的时谭c上面的例题:输入一系列学生的成绩,规定学生的学号不为0,按照学号 成绩的顺序输入数据 要求用函数完成传建链表和输出链表的操作代码:(自闭了好一会二才看懂书上的代码)(复制到DEV C++里面,主要看注释)#include<stdio.h>#include<stdlib.h>#include<malloc.h>//#define NULL...

2019-12-14 20:11:41 255 1

原创 gcd函数板子

#include<stdio.h>int gcd(int x, int y){ if(y == 0) return x; if(x < y) return gcd(y,x); else return gcd(y, x%y);} int main(void){ int n1;int n2; whil...

2019-12-10 22:00:56 310

原创 二分查找板子2

//折半查找其实是不需要进行对数组元素的个数为奇数还是偶数进行分开的讨论的(有隐式强制转化) //奇数项会出现中轴与某个边界轴重合的情况,但是不会影响查找//偶数项会出现中轴并不是真正的数组中心(中心根本没有元素),其实是中心靠左的一个元素 #include<stdio.h>int main(void){ int a[110]; int n; scanf("%d",&...

2019-12-06 16:57:33 150

原创 关于队列的基础操作

基本函数1:push 也是在栈顶放入一组元素2: pop 与栈不同的是,队列的pop是在队列的最底端移除一组数据,也就是说,最先放 入队列的元素可以最先被移除,这种行为也被称为FIFO(即先进先出)3: 用queue::front来 访问最低端的数据给出关于的代码:#include<cstdio>#include<queue>using names...

2019-12-03 18:32:17 85

原创 关于栈的基础操作

虽然可以用数组和队列可以轻易地实现栈,但是在c++的函数库里面已经给出了关于栈的函数:1  push 用于在栈的顶端放入一组数据2 pop  用于在栈的顶端取出(移除)一组数据(不能用访问栈顶的数据)3 如果要访问栈顶的数据,就要使用stack::top函数...

2019-12-03 18:20:53 87

原创 特殊的排序——字典排序

给出例子;(其实就是按照每一位的大小进行排序)现有一数列为 1 2 3,则其所有的字典排序为:1 2 3//就像字典的索引一样先按照第一位排序,再按照第二位排序…1 3 22 1 32 3 13 1 23 2 1由此可见一共要排6次序(3!次)当a[2]>a[1]>a[0]时停止排序总的思想就是从初始数列的最右侧开始,直到遍历到一组数对的左边的值小于右边的值,就记...

2019-12-02 19:17:07 200

原创 用递归实现进制的转换

#include<stdio.h>int JZ(int a,int b){ if(a<b) { printf("%d",a%b); return 0; } else { int rest = a % b; ...

2019-12-01 14:14:52 787

原创 560. 和为 K 的子数组(前缀和 + 哈希表)

所以index1处的前缀和如果为sum,那么前面只要出现过 k - sum 的前缀和就表示,有和为k的子数组存在。前缀和的差值可以表示一个区间内的元素的总和。因为,sum - (sum - k)= k。

2023-10-27 19:16:16 182

原创 2698 求一个整数的惩罚数 (子集和,DFS)

【代码】2698 求一个整数的惩罚数 (子集和,DFS)

2023-10-25 15:20:23 118

原创 1155掷骰子等于目标和的方法数 (dfs + 记忆化搜索)

【代码】1155掷骰子等于目标和的方法数 (dfs + 记忆化搜索)

2023-10-25 01:14:00 214

原创 [每日一题] 2731. 移动机器人 (思维 + 前面元素所有差值求和)

【代码】[每日一题] 2731. 移动机器人 (思维 + 前面元素所有差值求和)

2023-10-10 19:14:29 73

原创 [leetcode 剑指 Offer 29. 顺时针打印矩阵] 方向保持的DFS

【代码】[leetcode 剑指 Offer 29. 顺时针打印矩阵] 方向保持的DFS。

2023-04-06 19:36:56 232

原创 [力扣] 剑指 Offer 12. 矩阵中的路径

【代码】[力扣] 剑指 Offer 12. 矩阵中的路径。

2023-03-28 17:45:45 66

原创 [力扣] 1616. 分割两个字符串得到回文串

首先只考虑 a的前缀 + b的后缀 构成回文串的情况(反过来的解决思路完全相同),采用双指针的思想,左指针从a的左边开始遍历,右指针从b的右边开始遍历,如果要构成回文串,则 a的头部 和 b的尾部一定会存在相同的部分,可以先将最大的a的前缀等于b的后缀的长度找到。在遍历结束后,如果左指针大于等于了右指针,说明,a 和 b的前缀,后缀相同的部分完全可以构成一个完整的字符串,可以直接返回true。

2023-03-18 10:34:43 106

原创 [力扣 2488] 关于数组题目的求解思路

必须还要额外解释一下的是,为什么要用hash表来作为次数记录器,而不是普通的数组,他们的区别在于,hash表实际上不会开很大的数组,比如我要存前缀和为1e9的下表,那么hash就只会增加一个键值对,但是普通数组,就必须开1e9大小的数组,非常浪费空间。所以我们可以将原数组中比K大的数字设为1,比K小的数字设为-1,相等的设为0,这样可以用前缀和的性质来判断区间内的情况。如果出现了两个下标对应的前缀和相等,那么就可以说明这两个下标之间的元素比k大的和比k小的元素数量相等。

2023-03-16 19:17:34 54

原创 08_字符串拓展

1

2022-10-29 15:59:54 284

原创 05_类型转换

【代码】05_类型转换。

2022-10-29 15:25:04 263

原创 L2-035 完全二叉树的层序遍历

#include <iostream>#include <algorithm>using namespace std;const int Maxn = 2e5 + 10;int n;int tree[Maxn]; // 数组模拟好处就是顺序输出数组即为BFS顺序void Create(int t) { // 后序遍历输入数据到树里面即可 if(t > n) { return ; } else { Crea

2021-04-22 16:37:51 134

原创 根据前序遍历结果和中序遍历结果建立二叉树

#include <iostream> #include <algorithm> #include <queue>#include <set>using namespace std;const int Maxn = 100;typedef struct Node { int data = 0; struct Node *Left_node = NULL; struct Node *Right_node = NULL;

2021-04-22 14:53:06 82

原创 BFS 实现指数型递归

// BFS 实现指数型递归#include <iostream>#include <algorithm>#include <string>#include <vector>#include <set>#include <queue>using namespace std;const int N = 100 + 10;int n,k;string str;set<string> s; // 因为

2021-04-08 21:44:39 179

原创 将二叉搜索树的前序遍历结果转换为后序遍历结果 (数据结构)

题目链接:PTA L2-004递归原理分析:普通的二叉树必须同时具备中序遍历序列 + 任意其他序遍历结果才可以进行序列结果的转换,因为必须有中序遍历进行左右子树的划分,但是二叉搜索树因为左子树的值均小于根,右子树的值大于等于根所以可以节点的值进行左右子树的划分Tips : Pre表示前序序列 Post表示后序遍历序列首先分解求后序遍历结果的过程:求出左子树的后序遍历结果求出右子树后序遍历的结果将当前子树的根节点加入后序遍历的结果中去void getPost(int roo.

2021-03-04 19:35:53 777 3

原创 HDU 3461 并查集的应用

这道题最难想到就是区间内同时向上旋转的影响举例子说明:现有字符串:AA 可修改区间为[1,2]第二位可以随便修改,但是第一位无论怎么修改得到的都是等效的序列比如:BA 和 CA等效,CA 和 DA等效等等当是较长的字符串和较长的区间时:如:ABCDEF 可修改区间为[1,3]拿出[1,3]的区间 为 BCD前两位可以随机选择,但是最后一位无论怎么选得到的都是等效的如:ABD 和 ABC等效 ACD 和 ACC等效 但是这两组互不等效为什么前两位可以随便选择呢?其实是因为区间内部是同..

2021-02-08 22:37:34 120

原创 E. Two Platforms

#include <set>#include <map>#include <queue>#include <deque>#include <stack>#include <cmath>#include <vector>#include <string>#include <cstring>#include <iostream>#include <algorithm&

2021-01-24 15:22:38 79

原创 树状DFS理解

题目:题目可以将DFS的每一次进层都想象为树的向下走一层,退层则也是树中的该节点顺着路径向上倒着走一步,主要需要深入思考的是,树的向下走代表什么,向上走代表什么。 这个方法最好的地方在于可以快速确定如何将最后一层得出的结果,一起返回到递归的外面,只要将每一层的DFS都写在(传递)回推墙里面,则一但在某一个节点确定了正确,就可以沿着树的这条路径一直向上倒退至树顶。代码:#include <iostream>#include <algorithm>using namespa

2020-12-14 21:11:00 169

原创 二维费用的背包问题(DP中 01 背包的变形版本)

题目:二维费用的背包问题#include <iostream>#include <algorithm>#define LL long long using namespace std;const int Max = 1e3 + 50;int v[Max],m[Max],w[Max],f[Max][Max],N,M,V;int main(void){ ios::sync_with_stdio(false); cin.tie(0),cout

2020-12-12 22:47:38 122

原创 线段树 (区间和 + 单点操作)

#include <set>#include <map>#include <queue>#include <stack>#include <cmath>#include <vector>#include <string>#include <cstring>#include <iostream>#include <algorithm>#define FAST ios::

2020-12-06 21:49:57 84

原创 GCD + 素数筛实现

题目:GCD问题题目首先考虑最坏的情况,在这N个数字当中,先选出所有的素数 和1 组成最坏集合,这些由素数构成的集合中的任选两个数字的GCD结果都是1,再向这个集合中加入一个其他的数字,则一定会导致存在两个数字其GCD的结果大于1 (抽屉原理?)(但是要注意,当n小于4的时候,1,2,3全部都可以当作素数,则无法向其中再添加数字了)代码:#include <set>#include <map>#include <queue>#include <stac

2020-12-06 15:58:53 111

原创 黑白边 + 克鲁斯卡尔算法

Acwing学习的时候没有给出KrusKal算法的板子,这道题刚好遇到了(Prim算法也可以 ,其实就是没有想到怎么做)克鲁斯卡尔算法伪代码模板:(并查集实现)读入所有的边 将边按照权值进行排序 从权值小的开始,依次将边的两个端点加入并查集中(前提是这两个端点不再同一个并查集里面),最后判断是否存在最小生成树的时候,判断cnt是否等于顶点数n即可。黑色边题目:黑白边题目#include <set>#include <map>#include <queue>

2020-12-06 15:30:34 154

原创 第 K 小数字问题 (优先队列实现)

首先了解优先队列:可以理解优先队列就是一个含有内部排序的队列,具有队列的一切属性,本质上是通过堆来实现的。定义语法:priority_queue<Type, Container, Functional>Type 是数据类型 (注意:数据元素的类型可以是pair类型)Container 由数组实现的一些数据结构,如:vector,deque,不可以是List类型,就是存放元素的容器Functional 是内部排序的方式当使用的数据类型是基本的内置的数据类型的时候就可以直接传入类型来创

2020-12-06 14:53:57 225

原创 二叉搜索树的建立与父亲节点的查询

#include <iostream>#include <algorithm>#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define LL long longusing namespace std;const int N = 1e6 + 10;int num[N],n;typedef struct TreeNode{ int val; TreeNode *LChild,*R

2020-12-03 17:29:06 491

原创 N皇后问题

#include <set>#include <map>#include <queue>#include <stack>#include <string>#include <cstring>#include <iostream>#include <algorithm>#define FAST ios::sync_with_stdio(false)#define LL long longus

2020-12-03 13:44:57 76

原创 求关键路径

虽然可以实现基本的求图的关键路径的功能,但是存在瑕疵,必须保证图的下标最小的节点是整个图的源点,下标最大的节点是整个图的汇点 (工程编码思维)1.求图的拓扑排序#include <iostream>#include <algorithm>#include <queue>#include <set>#include <string>#include <cstring>#include <map>#includ

2020-12-02 21:40:59 94

原创 拓扑排序 + 链式前项星 (教材版本实现)

#include <iostream>#include <algorithm>#include <queue>#include <set>#include <string>#include <cstring>#include <map>#include <stack>#define FAST ios::sync_with_stdio(false)#define LL long longus

2020-12-02 17:11:27 94

原创 在一个很大的数组里面找两个数字使得其和在一定的范围内

题目:这道题只要出现了双重循环,不管如何进行剪枝都会导致TLE。只能使用其他的方法。AC代码(附讲解):首先介绍两个函数:lower_bound 是经常用来对STL容器进行查找的函数,其前两个参数是容器的迭代器类型,分别是,查找范围的 begin() 迭代器 和 查找范围的 end() 迭代器 第三个参数是待查找的数值 num 函数返回的结果是容器中第一个大于等于num的值得下标。upper_bonud 参数如上,函数返回的是第一个 大于 num 的值的下标Tips:1. 这两种查找的方

2020-11-30 21:46:56 315

原创 使用链式前项星实现BFS

依旧是对无向图进行的BFS实现,有向图就只添加一条边就可以了使用样例:#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <set>#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define LL long long using n

2020-11-26 15:31:38 97

原创 链式前项星实现图的DFS

实现的是无向图的遍历,有向图只存一条边即可实验图片:#include<iostream>#include<algorithm>#include<set>#include<cstring>#define FAST ios::sync_with_stdio(flase),cin.tie(0),cout.tie(0)#define LL long longusing namespace std;const int N = 1e5 + 10;

2020-11-26 15:04:28 66

原创 2020/11/25 div3 C (不排序使用unique的妙用)

题目:Div3 C主要的思想还是统计每个数字的出现次数,选择出现最少的元素的出现次数作为结果,在读入数字序列的时候要注意连续的两个位置,如果元素相同的话,就不用重复读入,对结果没有任何影响。(这里就用到了unique函数的另外一种用法,一般去重要先sort整个数列,保证有序,这里就不进行sort,直接使用unique函数,这样可以使得任何相邻的两个位置的元素都不会相同)要注意在统计数字的出现次数的时候,开头和末尾的元素的出现都不会被统计。(因为开头的元素即使被选中也不会贡献划分的次数,末尾的元素同理)

2020-11-25 16:34:28 130

原创 扩展欧几里得算法

题目:给定n对正整数ai,bi,对于每对数,求出一组xi,yi,使其满足ai∗xi+bi∗yi=gcd(ai,bi)。输入格式第一行包含整数n。接下来n行,每行包含两个整数ai,bi。输出格式输出共n行,对于每组ai,bi,求出一组满足条件的xi,yi,每组结果占一行。本题答案不唯一,输出任意满足条件的xi,yi均可。数据范围:1 ≤ n ≤ 10^5,1 ≤ ai , bi ≤ 2 ∗10^9输入样例:24 68 18输出样例:-1 1-2 1#include <

2020-11-24 21:26:10 280

空空如也

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

TA关注的人

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