- 博客(117)
- 资源 (1)
- 收藏
- 关注
原创 默写单词cpp(初学者版本)
在一个阳光明媚的早晨,我愉快的奋笔疾书,抄写默写着单词“abandon”,喝水的时候,水性笔顺着桌子掉落到地上,我心里一紧,颤颤巍巍的弯腰捡起来,在纸上写个字,发现果然笔尖果然摔坏了。8:输入数字2,输入文件名,由于之前是将txt文件放入项目文件内,所以不需要添加多余路径,这是“相对路径”。3:将要默写的单词按照图中格式写进txt文档,格式是:英文+空格+中文+“,”+中文+“,”+…2: 创建txt文档,命名day1,2,3,4,,以此类推,这是我的习惯。首先抱歉,代码写的很乱,很难看。
2024-03-19 22:25:08
1293
原创 N叉树的前后遍历非递归
规律:访问根节点->访问根节点的子树使用leetcode的题目来说明。输出根节点−处理子树递归的目的−逻辑处理−递归边界1.递归的目的:输出树的前序遍历2递归的逻辑处理:输出根节点->处理子树3.递归的边界:当树为空的时候返回难点来了,如果要使用非递归的方法怎么办。实际上,在计算机内存中,递归的过程,就是一个模拟栈的过程,遵从先进后出,后进先出的原理。每层递归的参数都会保存下来,等到递归回溯的时候才会将参数给回收。
2024-02-29 18:42:39
559
原创 树的括号表示法
发现,所有的括号都是配对出现的,且’(‘其配对的是最近的’)’。每次当遇到’(‘的时候,可以把新的问题具体成”构建一棵小树“(发现和最开始的问题是一个内在逻辑)。对于S字符串分析,S=A(B(,D(G,)),C(E,F(H,)))。遍历到B后面的’(‘的时候,问题变成构建B(,D(G,)),C(E,F(H,))这棵树,然后B挂在A身上。最开始的问题是构建A(B(,D(G,)),C(E,F(H,))) 这棵树。遍历到D后面的’(‘的时候,问题变成构建D(G,)这颗树。1.用一个类表示树的节点。
2024-02-28 18:33:17
1423
原创 蓝桥杯官网题目:2.包子凑数
对裴蜀定理有兴趣的可以关注我这篇博客,我会从cf和leetcode等网站更新相关内容,将会以链接形式帖在本篇下面。是一个未知数,它的取值有无数个,如果在三维坐标系中看,那么是所有的z(z可以被gcd(a,b)整除)。也就是说,ax+by可以表示大于(a-1)*(b-1)-1的所有正整数。也可以看一下我的个人理解,我是第一次听说这个定理,理解可能有误差。当x,y都是正整数的时候,包括0。,还有完全背包的基本运用,这里只介绍前者。的三维立体图,很显然是一个空间平面。a,b如果是互质的,那么。
2024-01-20 17:57:55
698
原创 Leetcode:128. 最长连续序列
乍一看感觉很简单,一看要用O(n)???因为我觉得题目很难而且题目看起来很简单,感觉以后会用到😆,做个记录。
2024-01-18 00:06:43
630
原创 leetcode:322. 零钱兑换(暴力dfs,记忆化dfs,动态规划(朴素+优化),bfs+贪心)
1.由于每件物品可以无限取,那么可以发现这是一个完全背包问题模型。
2023-05-21 13:11:09
801
原创 蓝桥杯训练day5
求左边第一个小的数,等价于求右边第一个小的数(将答案倒过来即可),从左往右使用单调递增的栈。求左边第一个大的数,等价于求右边第一个大的数(将答案倒过来即可),从左往右使用单调递减的栈。很明显,每次计算一次f[i],都要找到前面m个f的最小值,这可以想到单调队列维护最值。首先,可以敏锐的发现这是一道动态规划的题目,如果没有察觉,说明题目做少了。第一步:算出p的最长前后缀,用两个p来求。第二部:算出p在s中的位置,用p和s来求。首先异或运算的规则是:相同则0,相反则1。p是模式串,s是主串。
2023-04-04 20:10:04
565
原创 单源最短路建图
Bellman_ford算法会遍历所有的边,但是有很多的边遍历了其实没有什么意义,我们只用遍历那些到源点距离变小的点所连接的边即可,只有当一个点的前驱结点更新了,该节点才会得到更新;由于是刚开始写,所以说明每个算法的基本逻辑,但是很明显做法2和做法4是优先考虑的(因为是优化版嘛)说一句,可能不对,但是这个算法好像floyd算法啊,就是不停对边进行松弛。思路:枚举所有点为起点,计算起点到所有牛的最短路径的和。任意选一个模板,找到点1到最远的那个点的距离。floyd算法写的(yxc的方法)
2023-04-01 11:10:26
272
原创 蓝桥杯训练day4
每个家族有唯一的一个族长,如果给出家族所有人之间的关系,要将所有的人归类到确定的家族(有什么意义?比如我知道a是b的姑妈,但是这并不知道a是哪个家族(A,B)的,如果知道a是A族长的女儿,那么间接就知道了b是A族长女儿的侄子,那么b就是A族的成员) 这就是并查集要做的。第二件事情:如果将AB连两个族合并,不需要将A族的成员的全部转移到B族,只需要将A族族长和B族族长联系起来就可以。将元素放入末尾,然后向上进行比较和转移,维护二叉树的性质(对于任意节点,他大于等于他的左右孩子节点)对于堆的操作,简单介绍。
2023-03-25 22:14:32
613
原创 最长回文子串的三种做法
为什么这样说呢,因为这个manachar算法我从一年前就接触了,那个时候不会,看来两个小时没看懂,过了半年看懂了,然后又忘了,然后去看董晓老师讲的,又感觉自己行了,到现在可以很轻松的写出来。2.长度为2的字符串也特殊处理,因为dp[i][j]=dp[i+1][j-1]中,如果i==j-1,那么i+1
2023-03-23 17:40:06
2209
2
原创 蓝桥杯训练day3
但是可以知道的是,无论是哪种操作方案,一旦决定了第一步,按照上面的定义,一层一层来递推,得到的答案是唯一的。那么就穷举第一层的操作,然后固定第一层,从第二层开始去点亮上面一层的灯。对于全是B的情况:从字符串第一位开始,如果当前字符不是B,那么当前字符和下一个字符都变。递归的小诀窍,尝试解决问题,往里面解决三层,然后发现规律,然后利用规律写递归方程。过程比较复杂,需要做好一写就一天的思想准备,一步一步来,巩固基础,然后做出这道题。思路:经典二叉树问题,很入门的递归的题目,但是要手写非递归方式有点考验能力。
2023-03-22 19:34:39
372
原创 leetcode 1648. 销售价值减少的颜色球
我们知道,每次取球,都是从最大值集合里面取球,直到最大值集合所有的数都变成次大值,即次大值集合变成新的最大值集合。比如:a球有5个,此时取出一个a球,这个a球的价值是5,剩下4个a球。如果再取出一个a球,那么这个取出的a球的价值是4,以此类推。因为每次取出数量最多的球,也就是每次取出价值最大的球,每次取出最大价值的球,那么取n次,一定保证最终的价值最大。我们把Max拿到初始数组(没有动过的数组inventory),那么由于最终数组不能有大于Max的元素,所以就很明了了。这样可以保证取得的价值最大。
2023-03-10 21:25:50
554
原创 蓝桥杯训练day2
(1)在第二步中,a,b是从小到大枚举的,且可以保证ab成立,那么把a,b置换一下,一样成立。直接枚举所有连续的字符串的组合,找到唯一的那一个,记录下长度即可,非常简单。因为层数从小到大遍历,遇到大的才更新,所以可以保证第一次遇到的最大值层数最小。(2)left,right指针,left指向第一个遇到的x,right指向最后一个遇到的x。然后用一个l,r指向一个帖子的区间,判断该帖子是否满足要求,然后判断下一个帖子。二分还真可以做,需要字符串哈希的我知识,也可以直接用stl。
2023-03-06 20:17:41
2447
2
原创 蓝桥杯训练day1
这个题目难啊,由于所有的数都要一样,所有差分数组必须除了第一个数其余全是0.由于差分数组每次操作都需要b[L]+1,b[R+1]-1或b[L]-1,b[R+1]+1.所以将正数和负数相互抵消后,剩下的数要么和b[1]抵消,要么和b[n+1]抵消。只有后缀和满足1/3的下标大于前缀和的下标,就加(具体看代码)过(19/22)数据。就从后往前读一遍看看哪些位置可以为1就可以了,应该是个简单到不能再简单的题,,,这个题目,看的第一感觉应该是个简单题,没想到是个中等题,暴力只能过一半数据。
2023-02-20 21:38:16
495
原创 BFS的使用(acwing提高课之搜索)
很明显,这是一个最短路问题,而且边权为1,满足这两个条件,可以考虑bfs了。但是有一个问题,通常使用bfs的时候,只有一个起点,这题每个点都是起点,那么怎么做?核心思想:普通的最小步数只需要记录点的坐标,也就是普通意义上的‘点’。bfs是搜索算法里面最基础的算法,对于队首的点,每次搜索其周围所有的点,然后将其入队。因为值为1的点到最近的值为1的点就是其本身。题意就是:遍历每个点,找到距离当前点最近的值为‘1’的点,记录他们之间的距离。一般的问题是求单源bfs,单源的意思就是一个起点,那么多源就是多个起点。
2023-02-12 17:13:05
420
原创 VC调用AutoCAD自动化的两种方法(包装类、接口)使用详解
在工程领域,使用AutoCAD时经常利用自动化(Automation)技术提高工作效率,VC调用AutoCAD自动化时有两种常用的方式,一个是包装类的方式,另一个是接口的方式,当然不只是AutoCAD,一般的支持Automation的软件都可以使用这两种方式,本文就这两种方式给出详细的使用方法,并简要总结各自的优缺点。文中代码基于VC6及以上。
2023-01-05 10:08:35
2533
原创 SegeX SgxVariantArrayT:VC封装支持多维数组的变体类型(VRIANT 、SafeArray)(附免费免积分源代码)
针对Com编程过程中,比如AutoCAD、Surfer、Excel、Word中使用自动化Automation(OLE)功能时,经常遇到VARIANT数组的情况,在VC中使用VARIANT数组很繁琐,特别是多维数组。本文介绍了一种封装VARIANT数组的方法并附带了完整的免费代码,具备以下主要功能:1)最多4维数组的支持;2)使用VARIANT数组类似于CArray、vector,也类似与Vb中的动态数组;3)支持CArray、vector与VARIANT的转换(1~4维)。本文的代码基于VC2012及以上。
2023-01-04 19:12:54
891
4
原创 矩阵快速幂(新手做法)
相当于把矩阵看成‘2’,然后算2n。当然实际上这个2是一个矩阵。换汤不换药哈。//这里默认矩阵的行列都是10,可以自己改,只是为了方便(默认n*n阶矩阵) struct Matrix {Matrix() //默认构造函数 {i
2023-01-02 20:12:16
1136
原创 VC2019 VC2022添加导入Word Excel AutoCAD Surfer等类型库(typelibaray)的方法
前两天,发现很多人在使用VC2019 VC2022开发Office AutoCAD Surfer等自动化组件时,不知道怎么导入类型库,和VC2017及以前的版本相比,类向导中AddClass没有了From a type libaray选项了。甚至还有VC2019以后就不支持tepelib组件开发的谣言。所以这里为大家展示在VC2019及以上导入类型库的方法。
2022-12-30 17:20:51
1478
2
原创 模板题---2.2(图论--最小生成树,floyd,二分图)
说人话的定义:图中点通过移动能分成左右两部分,左侧的点只和右侧的点相连,右侧的点只和左侧的点相连。每次都要找到“除了U里面的顶点,还剩余的顶点里面距离U集合最近的一个点,这个点加入U"。有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接!对于枚举的边,如果当前边的两个点都在生成树集合内,则这条边不要,否则就要.在带权连通图中,V是所有点的集合,U是已经生成最成的树的顶点的集合。思路:动态规划,从a到b的最短距离等于从a到k和k到b的距离之和。什么是二分图:(引用)
2022-12-30 16:37:03
401
原创 SegeX Automation:VC调用Golden Surfer自动化失败(VC调用Automation失败)原因详解
在工程领域,Golden Surfer普遍使用,为了提高成图效率,经常使用自动化(Automation)技术调用Surfer完成自动绘制。但网上一般提供的调用方式会有一定机会失败,从而大大影响了用户的体验并给工作带来困难。本文来源于SegeX Automation组件中的技术,旨在分析Surfer调用失败的原因,并给出解决办法。本文中的一些方法也适用于其他软件如AutoCAD、Office等软件的Automation使用。本文的代码基于VC2012及以上。
2022-12-29 09:49:28
476
原创 SegeX MemDialog:封装好的内存对话框(非资源对话框)说明
SegeX组件之一:SegeX MemDialog,应用级内存对话框封装类。源码首次公开,下载不需要积分。使用该类不需要在VC中创建资源,具有如下主要功能:1.完备的内存对话框封装,功能齐全;2.提供AddButton...等标准函数添加各种对话框控件;3.无需编写消息处理,使用控件状态机制获取对话框结束后不同控件的状态、内容等,即写即用;4.支持模态和非模态方式打开对话框。支持VC2012及以上。
2022-12-28 11:59:04
398
1
原创 SegeX MemDC:实用型双缓冲内存DC (内存DC 封装MemDC)(附免费源代码)
网上很多现成MemDC一般都只具备基本功能,且只适用于映射模式为MM_TEXT的情况,复杂的场景,比如视图需要放大、缩小,这时很可能要出现问题。本文旨在详细介绍能用于实际应用的MemDC双缓存技术。从基础开始,一步一步讲解技术的实现过程、解决问题以及为什么要这么做。本文附免费的源代码。
2022-12-28 11:52:34
625
原创 SegeX Progress:MFC通用进度条
SegeX组件之一:SegeX EvProgress。应用级源代码,首次公开。EvProgress是基于MFC的通用进度条,功能强大又简单易用。几行代码就可以让你的计算具有进度显示的功能,并且具有多种高级功能:1. 支持任意多个进度条同时存在;2.支持在子函数中继续主函数中的进度;3.支持两级子进度条;4.加入进度条后可避免长时间计算的”应用程序没有响应”;5.支持调节大小、背景颜色、背景图片;6.全自动管理。
2022-12-27 10:06:45
1211
1
原创 任意重循环(循环阶数不定、循环层数不定)
有时需要用到不定层数的循环,也就是说循环层数不定。这是本人实现的任意重循环的代码。供c++编程人员直接使用。
2022-12-25 11:26:06
1457
原创 模板题---2.1(图论)
Bellman_ford算法会遍历所有的边,但是有很多的边遍历了其实没有什么意义,我们只用遍历那些到源点距离变小的点所连接的边即可,只有当一个点的前驱结点更新了,该节点才会得到更新;,决定是最大优先队列还是最小优先队列,默认的less为最大优先队列,实现方式是最大堆,greater为最小优先队列,实现方式是最小堆,结构都是二叉树。核心:对所有的点进行“对邻接边尝试松弛”即dist[to]=min(dist[to],dist[from]+w[from][to]);大根堆就是根节点最大,小根堆就是根节点最小。
2022-12-23 15:10:46
384
原创 模板题---1.3(前缀与差分)
给一个二维数组:求出其中某个子矩阵区间的所有元素之和。暴力法效率低,用二维前缀和解决。细节:‘’pre[r]-pre[l-1]‘’不要写成"pre[r]-pre[l]“差分:如果有两个数组,a,b。b数组是a数组的前缀和。那么a数组就是b数组的差分。描述:一个一维数组 1 2 3 1 5 6 .用pre[i]表示前i个数的和。思路:同上,二维差分是这四个模板最难理解的一个。
2022-12-12 20:14:53
95
原创 模板题---1.2(高精度--加减乘除)
比如1234和321.用strcmp比较就是321大。注意去除前导0.再一个不要用string类的自带重载运算符。输入两个由数字组成的字符串相加。输入1234 1234。
2022-12-12 10:12:42
110
原创 蓝桥杯---动态规划(1)
这袋糖果里面有之前没有尝过的,那么选择它,如果这袋糖果所有的口味都已经尝过,那么就不要这一袋。那么只需要将当前的尝过的口味的状态表示处理,就可以用简单的01背包去完成这道题。这道题的dp定义:dp[i][j][k]表示前i层,第i层的状态是j,第i-1层的状态是j-1的合法方案数。状压dp:(1)预处理合法状态。原始思路是枚举所有的子串,然后对每个子串进行求值,最后求和。思路:对于每袋糖果,要么选,要么不选。换个方法:枚举所有字符,累加另包含当前字符的子串数目。方法:状态压缩+简单dp(简称:状压dp)
2022-12-01 21:59:32
1050
原创 模板题---1.1(快速排序,归并排序,二分)
找到目标值起始和结束的位置。(目标值可以有多个)给n个数从小到大排序。给n个数从小到大排序。数组默认从小到大排序。
2022-11-26 12:52:37
81
原创 动态规划--树型dp
关键是往上面找,那么就需要先dfs找一下每个顶点的最长路径和次长路径。然后再一次dfs来求出每个顶点往上面(父节点)搜索的最长路径。那么就可以枚举每个顶点,当前顶点为路径的最高一个顶点,路径只能往下面延伸。最长路径一定会在这个集合里面。先任意找到一个树中一个点u,找到距离u最远的一个点v,那么v一定是树的直径(树的直径不唯一)的一个端点。任意一个点u,它有两种情况,要么以u为起点向下延伸找到最长距离,要么往上面延伸找到最长距离。将树的直径的集合转换为且以某个顶点为一条路径的最高点的集合。
2022-11-23 18:22:20
610
SegeX SgxVariant:VC封装支持多维数组的变体类型(VRIANT 、SafeArray)(免费免积分)
2022-12-30
SegeX组件之一:SegeX MemDialog源码 应用级内存对话框封装类
2022-12-27
MFC高级通用进度条(SegeX EvProgress)
2022-12-25
任意重循环(循环阶数不定、循环层数不定) c++ 代码 原创
2022-12-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人