自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 240512-关于如何用VSCode编写C#程序的简单说明

从安装软件开始 ,到编写一个HelloWorld的C#文件结束,介绍如何用VSCode编写C#程序。

2024-05-12 13:23:36 496

原创 240512-关于VisualStudio相关的快捷键介绍【未完待续】

很多编辑器的快捷键都是通用的 记住有利于提高书写效率。

2024-05-12 11:41:39 302

原创 240504-关于买卖股票问题的解法

思路:在前面的基础上更改第1个状态转移方程即可。优化:空间复杂度可以降低为o(1)优化:空间复杂度降低到o(k)补一版记忆化搜索的代码。

2024-05-04 14:49:08 1186

原创 240503-关于Unity的二三事

240503-关于Unity的二三事1 常用快捷键快捷键描述Ctrl+P播放/停止Ctrl+1打开Scene窗口Ctrl+2打开Game窗口Ctrl+3打开Inspect窗口Ctrl+4打开Hierarchy窗口Ctrl+5打开Project窗口Ctrl+6打开Animation窗口2 关联VisualStudio20223 节约时间:将最新声明的参数移动到最上面 方面指定

2024-05-03 21:12:32 594

原创 240503-关于VisualStudio2022社区版的二三事

1

2024-05-03 21:11:18 253

原创 简易的状态机代码

【代码】简易的状态机代码。

2024-05-03 20:16:46 165

原创 类银河恶魔城学习记录-Crash Course

本文记录一下学习过程中照着教程敲的代码~

2024-05-02 19:31:24 294

原创 LeetCode第264场周赛解题记录

T1 1903. 字符串中的最大奇数class Solution {public: string largestOddNumber(string num) { string res; for(int i = num.size(); i >= 0; i--) { int x = num[i] - '0'; if(x % 2 == 0)continue; for(int.

2021-06-21 17:56:31 127

原创 LeetCode第245场周赛解题记录

1 1897. 重新分配字符使所有字符串都相等class Solution {public: bool makeEqual(vector<string>& words) { int cnt[26] = {0}; for(auto word : words) for(char c : word) cnt[c - 'a']++; int n = words.size();.

2021-06-16 08:58:38 133

原创 LeetCode第244场周赛解题记录

一、5776. 判断矩阵经轮转后是否一致思路:图解模拟(设正方形边长为l)class Solution {public: bool findRotation(vector<vector<int>>& mat, vector<vector<int>>& target) { int n = mat.size(); bool res1, res2, res3, res4; r.

2021-06-06 17:22:53 131

原创 LeetCode第243场周赛记录

2021-06-06 12:17:47 178 8

原创 LeetCode第242场周赛记录

5763. 哪种连续子字符串更长5764. 准时到达的列车最小时速5765. 跳跃游戏 VII5766. 石子游戏 VIII

2021-05-23 17:02:52 87 1

原创 LeetCode第241场周赛记录

1 5759. 找出所有子集的异或总和再求和2 5760. 构成交替字符串需要的最小交换次数3 5761. 找出和为指定值的下标对4 5762. 恰有 K 根木棍可以看到的排列数目

2021-05-17 09:30:08 74

原创 LeetCode第240场周赛记录

5750. 人口最多的年份5751. 下标对中的最大距离5752. 子数组最小乘积的最大值5753. 有向图中最大颜色值

2021-05-09 15:24:28 78

原创 LeetCode第239场周赛记录

5746. 到目标元素的最小距离5747. 将字符串拆分为递减的连续值5749. 邻位交换的最小次数5748. 包含每个查询的最小区间

2021-05-04 13:35:39 85

原创 LeetCode第238场周赛记录

1 1837. K 进制表示下的各位数字总和思路:位运算class Solution {public: int sumBase(int n, int k) { int res = 0; while(n) { res += (n % k); n /= k; } return res; }};2 1838. 最高频元素的频数思路:.

2021-04-26 17:25:38 78

原创 第三组

1. LeetCode 31. 下一个排列大概思路:由于是要找到下一个排列,所以变动范围尽肯能靠后(增加的幅度更小),从数组末尾开始的第一个降序(倒着看)排列的数到数组末尾就是数组的变动范围,记为[l, r]。将区间[l, r]内的数分为区间左端点和剩下的所有数两个部分,第二部分是一个降序排列的数组,第一部分即区间左端点的数小于第二部分第一个数。要想找到区间[l, r]的下一个排列,由于第二部分已经是最大排列,所以只能改变第一部分,在第二部分找出一个数大于第一部分且最小,将其与第一部分交换位置,

2020-11-06 12:14:07 132

原创 第二组

1. LeetCode 11. 盛最多水的容器大概思路:双指针l和r指向最左和最右直线,左右指针逐渐往中间移动,一边移动一边更新答案。假设l先指向了最优解左直线,则r指向最优解右直线右边的直线,若h[r]<h[l],则r指向直线为短板,r左移,若h[r]>=h[l],则此时l指向的直线为短板,此时r就指向了最优解右直线。因此移动规则就是哪边低哪边的指针往中间移动,这样能保证两个指针在移动过程中的某个时刻指向最优解两端直线。class Solution {public:

2020-11-04 20:17:05 75

原创 数学知识——组合数

数学知识——组合数组合数I(n<=10000, a,b<=2000 mod p)组合数II(n<=1000,a,b<=105 mod p)组合数III(n<=20, a,b<=1018, mod p)组合数IV(a,b<=5000)满足条件的01序列AcWing 885. 求组合数 I核心思路:预处理、动态规划o(n2)从a个数中选b个数的所有方案可以分为两类(从a个物品中任选一个设为x):选出的b个物品包含x:c[a-1][b-

2020-11-04 09:57:36 285

原创 数学知识——质数、约数

数学知识——质数、约数质数试除法判定质数分解质因数筛质数约数试除法求约数约数个数约数之和最大公约数质数AcWing 866. 试除法判定质数#include<iostream>using namespace std;int n;bool check(int x){ if(x < 2)return false; for(int i = 2; i <= x / i; i++) if(x % i ==

2020-11-04 09:56:27 355

原创 数学知识——欧拉函数、快速幂、龟速乘法

数学知识——欧拉函数、快速幂欧拉函数欧拉函数筛法求欧拉函数快速幂快速幂快速幂求逆元龟速乘法欧拉函数欧拉函数定义:1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为ϕ(N)。若在算数基本定理中,N=p1a1p2a2…pnan,则ϕ(N)= N * p1−1p1\frac{p1-1}{p1}p1p1−1​ * p2−1p2\frac{p2-1}{p2}p2p2−1​ * … * pn−npn\frac{pn-n}{pn}pnpn−n​。AcWing 87

2020-11-04 09:56:05 192 1

原创 数据结构——队列

2020暑假算法复习——队列、单调队列本文主要内容:模拟队列单调队列1 模拟队列主要功能:实现一个具有队列基本功能并能随机访问的模拟队列时间复杂度:队尾插入,队首弹出,判空操作均为o(1)基本思路:利用一个数组q[]存放队列元素,两个变量tt和hh分别指向队尾和队首元素初始化时tt=-1,hh=0(也可以有其他初始化方式)入队x:q[++tt]=x,出队:++hh,队首:q[hh],若tt>=hh则队列非空,否则为空注意事项:不要忘了tt和

2020-11-04 09:54:28 145

原创 数据结构——并查集

2020暑假算法复习——并查集本文作为复习用,持续更新中~1 基础主要功能:查询两个元素是否在一个集合中合并两个集合(单独的一个元素也算一个集合)查询连通块中点的数量时间复杂度:具体问题具体分析基本思路:用一个p数组维护每个节点的父节点,例如x节点的父节点为p[x]利用find函数进行集合查询和路径压缩,例如find(x)返回x的集合每个集合的顶点元素值用来表示该集合合并两个集合可以让其中一个集合顶点x的p[x]等于另一个集合的顶点元素值。因为所有集合的顶点

2020-11-04 09:52:38 53

原创 第一组

1. LeetCode 3. 无重复字符的最长子串大概思路:本题可以采用双指针算法,时间复杂度为o(n)。用数组或者哈希表来维护双指针指向区间的每个字母出现的次数,区间中所有字母出现次数小于等于1即为一个合法区间。每次右指针右移,一个新字母加入区间,则区间中该字母数量加1,若该字母数量大于1,则左指针左移,直到该字母在区间的数量为1。区间具有一种单调性,若右指针右移,则左指针要么不动,要么也向右移动,因此算法时间复杂度为o(n)class Solution {public: i

2020-11-04 09:49:12 60

原创 DP——计数类DP、数位统计DP

DP——计数类DP、数位统计DP计数类DP整数划分数位统计DP计数问题计数类DPAcWing 900. 整数划分关键思路:对于x的任意一种划分,该划分的数的集合分为两类,一类包含1,一类不包含1。#include<iostream>using namespace std;const int N = 1100, mod = 1e9 + 7;int f[N][N], n;int main(){ cin >> n;

2020-11-03 19:44:06 305

原创 DP——线性DP、区间DP

DP——线性DP最长上升子序列最长公共子序列编辑距离最长上升子序列AcWing 896. 最长上升子序列 II知识点:线性DP、整数二分思路:状态表示:f[i]表示长度为i的所有子序列,值为长度为i的所有子序列末端最小元素(这个所有是对应已经访问的所有数组元素)。状态计算:对于任意序列中的元素x,若f[i]为f[1]~f[len]中(len是当前最长子序列长度)小于x的最大元素,则f[i+1]=x。补充:f[]一定单调递增,可以用反证法去证明可以用整数二分来优化查找

2020-11-03 19:42:50 219

原创 字符串比较——KMP

2020暑假算法复习——KMP本文主要内容:基础复习KMP求字符串最小循环节1 基础复习主要功能字符串匹配求字符串最小循环节时间复杂度o(n)基本思路:1.不用kmp算法只要文本串S(长度为n)与搜索串P(长度为m)对应的某一个字符不同,P就往后滑动1位再从头开始比较,用了kmp算法P滑动k位(k>=1 && k < m)从原位置进行比较用一个next[]数组记录P的所有位置的最长匹配前缀(前缀等于后缀的最长前缀)长度,当比较S和

2020-11-03 19:41:38 217

原创 数据结构——树状数组

2020暑假算法复习——树状数组本文主要内容:基础复习(单点修改和区间查询)用树状数组实现区间修改和单点查询用树状数组实现区间修改和区间查询将输入数组值作为树状数组下标1 基础复习主要功能:动态实现数组的单点修改和区间查询时间复杂度:单点修改和区间查询都是o(logn)注意事项:变量值的溢出下标从1开始模板题:Acwing1264. 动态求连续区间和1.1 Acwing1264. 动态求连续区间和#include<iostream&gt

2020-11-03 19:40:28 108

原创 数据结构——线段树

2020暑假算法复习——线段树本文主要内容基础复习线段树动态求区间最值线段树动态求区间最大区间和1 基础复习主要功能动态实现单点修改和区间查询时间复杂度单点修改和区间查询的时间复杂度都是o(logn)基本思路:建立一个结构体数组,数组中每个元素维护一段区间(包括两个端点及区间性质),每个结构体元素代表线段树的一个节点。线段树的节点维护一个区间,则将区间分平均为两半,该节点子节点维护左子区间,右子节点维护右子区间。线段树的叶子节点l=r=数组元素下标,代表单

2020-11-03 19:39:36 93

原创 DP——状态压缩DP、树形DP

DP——状态压缩DP、树形DP状态压缩DP蒙德里安的梦想最短Hamilton路径树形DP没有上司的舞会状态压缩DPAcWing 291. 蒙德里安的梦想思路:状态压缩:对于每一列的摆放状态,1表示横放(会占据右边邻列同行格子),0表示不横放。对于任意一列,连续0的个数一定要是奇数才满足条件f[i][j]表示前i列中第i列为状态j的方案集合,值为方案个数状态转移条件可以简化为st[i | j] && (i&j)==0&&a

2020-11-03 19:38:46 125

原创 DP——背包问题复习

DP——背包问题复习01背包模板题完全背包多重背包分组背包01背包问题AcWing 2. 01背包问题 思路:状态表示:f[i, j]表示从前i个物品中选,体积为j的方案集合,值为所有方案价值的最大值。状态计算:对于第i个物品只有两种操作,选or不选,所以状态f[i, j]只能有f[i-1, j-vi] + wi和f[i-1,j]两种状态转移而来。转移方程:f[i][j] = max(f[i - 1][j], f[i - 1][j - vi] + wi &&

2020-10-30 14:09:34 73

原创 贪心复习

贪心复习区间问题区间选点最大不相交区间数量区间覆盖区间分组Huffman树排序不等式绝对值不等式推公式本文主要部分参考了Acwing算法基础课,详情可以去看看。区间问题AcWing 905. 区间选点知识点:排序+贪心思路:将所有区间按照左端点从左到右排序从右向左遍历所有区间,若当前区间不包含点,则选取当前区间左端点(因为这样能使更多区间包含该点,体现了贪心的思想)#include<iostream>#include<al

2020-10-30 14:08:06 76

原创 LeetCode第198场周赛题解

LeetCode第198场周赛题解题目来源:LeetCode官网本文主要内容为 Acwing y总视频讲解的听课笔记及个人理解1.LeetCode 1518. 换酒问题题目描述小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例 1:输入:numBottles = 9, numExchange = 3输出:13解释:你可以用

2020-10-30 14:07:34 178

原创 搜索——bfs

2020暑假算法学习(3)——bfs本文主要内容:基础复习利用bfs进行拓扑排序多源bfs1 bfs基础主要功能:求边权相等的图的单源最短路层序遍历注意事项:队列元素类型的确定判断状态数组更新的位置是在弹出队头时还是在将新元素加入队列时(取决于队列是否允许存在重复元素)模板题1:Acwing844. 走迷宫#include<iostream>#include<queue>using namespace std;cons

2020-10-30 14:07:03 189

原创 图论——二分图

算法复习(3)——二分图本文主要内容:染色法判断二分图匈牙利算法求二分图的最大匹配1 染色法判断二分图时间复杂度:o(n + m)(n为节点数、m为边数)基本思路:没有染色的点去dfs染色,该点所在连通图是二分图则dfs返回true,否则返回false,任何图统一从某种颜色开始染色在dfs函数中遍历与当前节点相邻的所有节点,若相邻节点没被染色则继续dfs,否则判断当前节点和相邻节点的颜色是否冲突模板题:Acwing 860. 染色法判定二分图#include&lt

2020-10-30 14:06:22 137

原创 图论——最小生成树

算法复习(3)——最小生成树本文主要内容:Prime算法求最小生成树Kruskal算法求最小生成树1 Prime算法求最小生成树时间复杂度:o(n2)基本思路:维护一个最小生成树集合在集合外找一个距离集合最近的点加入集合,用该点更新其他所有点到集合的距离原理同Dijkstra算法类似,堆优化也同Dijkstra算法的堆优化类似模板题:Acwing858. Prim算法求最小生成树#include<iostream>#include<cstri

2020-10-30 14:05:26 84

原创 图论——最短路

2020暑假算法复习(3)——最短路

2020-10-30 14:04:36 184

原创 数据结构——trie树

2020暑假算法复习——trie树本文主要内容:基础复习文章不定期更新中~1 基础复习主要功能:模拟STL中的set,查询一个集合中是否有字符串x,字符串x的数量,将一个字符串串x插入集合等。时间复杂度:插入和查询o(n)基本思路:用个二维数组son[N][M]来模拟二维链表,数组第一维下标表示地址,第二维下标表示字符映射,N不超过所有字符串字符个数之和、M不超过字符种类数遍历字符串,若当前地址p的当前字符的映射k的son[p][k]已经链向另外一个地址,则

2020-10-30 14:03:20 89

原创 搜索——dfs

2020暑假算法复习三——dfs

2020-10-30 14:02:21 68

原创 基础算法——哈希表

2020暑假算法复习——哈希表本文主要内容:基础复习拉链法蹲坑法(开放寻址法)拓展持续更新中~1 基础复习主要功能:模拟set,往集合中插入一个数字,查询这个数字是否在集合中出现过模板题:Acwing840. 模拟散列表、Acwing841. 字符串哈希1.1 Acwing840. 模拟散列表方法1:拉链法思路:用一个邻接表来存储集合中所有数。插入时对于每一个数x计算其mod N的余数k作为表头,将其插入邻接表表头位置(头插法)

2020-10-30 14:01:11 96

空空如也

空空如也

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

TA关注的人

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