
算法
文章平均质量分 69
Micmic33
这个作者很懒,什么都没留下…
展开
-
2022暑期力扣杂记
个人力扣复习原创 2022-10-29 15:21:07 · 417 阅读 · 0 评论 -
【***十大排序***C++实现***】
冒泡排序简单选择排序插入排序。原创 2022-09-03 17:14:04 · 202 阅读 · 0 评论 -
【***数组***】
C++中,二维数组的内存空间也是线性的连续的704. 二分查找 - 力扣(LeetCode)27. 移除元素 - 力扣(LeetCode)有序数组的平方 977. 有序数组的平方 - 力扣(LeetCode)原创 2022-06-21 21:27:15 · 424 阅读 · 0 评论 -
【算法基础模板背诵集合】
大多数是准备蓝桥杯的内容原创 2022-06-17 20:23:54 · 113 阅读 · 0 评论 -
闫氏DP分析法
用于加深对dp问题的分析理解重点是,动态规划其实是求有限集中的最值问题。先化零为整,再化整为零原创 2022-06-17 10:48:21 · 101 阅读 · 0 评论 -
【**双指针&滑动窗口**】
目录概述对撞指针快慢指针滑动窗口算法双指针,指的是遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个方向相同(快慢指针)或方向相反(对撞指针)的指针进行扫描。什么题想到用双指针——有序数组有的题也可以sort排个序~~~一般来说时间复杂度就是快排的时间复杂度在有序数组中,将指向最左侧的索引定义为左指针,最右侧的定义为右指针,然后从两头向中间进行数组遍历344. 反转字符串 - 力扣(LeetCode) 这道题用双指针做的话,是最简单的对撞指针。只需要把左右的值互换就行了881. 救生艇 -原创 2022-06-11 12:06:23 · 288 阅读 · 0 评论 -
【***BF算法--->KMP算法***】
KMP算法是用来解决字符串匹配问题的需要一些术语:主串:被搜索的字符串(一般来说就是那个长的)模式串:被匹配,是查找的模板查找子串,在主串中查找匹配模式串。(这一类的算法又称模式匹配算法)BF算法是一种纯暴力的字符串匹配算法。不过他比较符合人的思考方式——)对源字符串和目标字符串逐个字符地进行比较算法过程就是不断地比对,直到在主串中找到目标串或者遍历完目标串举例:可以很容易地看到,每次T匹配失败之后,都会往后移动一个位置。那么想要优化它,可以-->在一次匹配中我们能判断移动几次,或者我们能知道往后移动原创 2022-06-09 10:09:41 · 110 阅读 · 0 评论 -
【**并查集Union-find**】
并查集用来解决1.元素分组2.不相交集合的合并与查询之前有些例子中用帮派来理解并查集,帮主就是代表元素其实,并查集是大量的树经过合并生成一系列家族森林的过程 并查集的存储结构并查集用数组表示整个森林,初始时每个森林的树根为自己存储与初始化查询查询就是为了找到这个集合的代表元素,也就是树的树根但是,树会出现高度过高的问题,每次都会经过太多次递归,非常耗时间,因此引入了路径压缩路径压缩后的查询[在递归的同时将路径压缩]合并就是把一棵树的根节点设置成另一棵树的根节点合并题目合根植物原创 2022-06-07 21:35:42 · 128 阅读 · 0 评论 -
【***蓝桥杯国赛部分真题及解析汇总***】
(67条消息) 2018蓝桥杯国赛C/C++B组真题_Micmic33的博客-优快云博客(67条消息) 2018蓝桥杯国赛C/C++B组真题_Micmic33的博客-优快云博客(67条消息) 2019蓝桥杯国赛C/C++B组真题_Micmic33的博客-优快云博客 (67条消息) 2020蓝桥杯国赛C/C++B组真题_Micmic33的博客-优快云博客_蓝桥杯c++国赛真题 (67条消息) 2021蓝桥杯国赛C/C++B组真题_Micmic33的博客-优快云博客_蓝桥杯c++国赛真题.......原创 2022-06-06 10:16:07 · 597 阅读 · 0 评论 -
2017蓝桥杯国赛C/C++B组真题
答案:1040254很简单很简单很简单,让字符作差就能算出它们差几个瓷砖样式对于每一处瓷砖,有这两种可能 1.(x,y)处空着 横着贴(贴完判是不是还可以继续一行贴) 竖着贴(贴完判是不是还可以继续一行贴) 2.(x,y)处有砖 横着下一个位置继续贴 下一行开头开始贴.........原创 2022-06-05 17:42:33 · 474 阅读 · 1 评论 -
2018蓝桥杯国赛C/C++B组真题
这道题用暴力试一下就行,可以优化的优雅一点【法2】一个用了,相邻的就不能用(联想打家劫舍),那么对于每一个激光,有开或不开两种决策——>动态规划答案:2178309【法1】每一个灯有开不开两种可能,我们想试出所有的组合--->dfs搜索dfs不如dp好理解,应多多思考,为什么从最后一个倒着开始试探,为什么靠这样就能试探出所有情况一开始没有理解题目中“从任意时间转换到任意时间的最大操作次数”1.先求当前数字+m所需的最小次数,0...原创 2022-06-05 11:37:52 · 272 阅读 · 1 评论 -
2019蓝桥杯国赛C/C++B组真题
首先先复习一下欧拉筛法本道题的核心思想是:先用欧拉筛法把素数筛出来,存在pre数组中dp[i][pre[j]]表示满足这些额外条件的分解方案数:1、原创 2022-06-03 17:32:13 · 573 阅读 · 0 评论 -
动态规划——最大和问题
一、最大子序列和问题定义:对于给定序列 a1,a2,a3……an 寻找它的连续的最大和子数组。用数组 dp[i] 来保存当前最大的连续子数组,循环遍历每个数,然后每次检验 dp[i-1] 是否大于零,只要大于零就令 dp[i] = dp[i-1]+a[i] ,如果 dp[i-1]<0 ,那么直接令 dp[i]=a[i]for(int i=2;i<=n;i++){ if(dp[i-1]>=0) dp[i]=dp[i-1]+a[i];原创 2022-05-12 19:16:43 · 811 阅读 · 0 评论 -
【**线性dp**】
线性dp汇总最大子序列和,最大子矩阵和,最大收益,路径数等原创 2022-05-10 17:29:40 · 370 阅读 · 0 评论 -
【***动态规划DP题目汇总***】
线性DP线性dp原创 2022-05-10 17:17:49 · 120 阅读 · 0 评论 -
线性结构上的dp——LIS,LCS,LCIS
一些之前的概念区别:(1)字符子串:指的是字符串中连续的n个字符,如abcdefg中,ab,cde,fg等都属于它的字串。 (2)字符子序列:指的是字符串中不一定连续但先后顺序一致的n个字符,即可以去掉字符串中的部分字符,但不可改变其前后顺序。如abcdefg中,acdg,bdf属于它的子序列,而bac,dbfg则不是,因为它们与字符串的字符顺序不一致。 (3) 公共子序列:如果序列C既是序列A的子序列,同时也是序列B的子序列,则称它为序列A和序列B的公共子序列。如对序列...原创 2022-05-07 15:49:29 · 609 阅读 · 0 评论 -
2020蓝桥杯国赛C/C++B组真题
最简单的枚举就可以解决~~~~答案:20312088#include<iostream>#include<queue>#include<string.h>using namespace std;//每个点的坐标 struct node{ int x; int y;};bool v[10000][10000]; //判断这个点有没有黑 int dist[10000][10000];int dx[4]={-1,1,0,0};...原创 2022-05-06 11:11:31 · 2494 阅读 · 2 评论 -
2021蓝桥杯国赛C/C++B组真题
答案:2653631372#include<iostream>#include<string.h>#define ll long longusing namespace std;ll dp[2022];int main(){ memset(dp,0x7f,sizeof(dp));//初始化最大值; dp[0]=0;//根据题意,当子树为空时权值为0; //dp[i]代表有i个结点来组成这棵树 for(int i=1;i<...原创 2022-05-03 10:42:18 · 4492 阅读 · 0 评论 -
✪ 树形dp ✪
没有上司的舞会P1352 没有上司的舞会 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)此题画出来是一种这样的结构(有一种“前向星存图”的方法,但这题没必要用)同样可以采取dp的思考方式dp[n][2] 数组代表每个人做出决策之后的快乐值,0是不去,1是去1.初始化dp[x][0]=0;dp[x][1]=r[x];2.状态转移方程如果x是当前职工,y是他的下属,那么:dp[x][0]+=max(dp[y][0],dp[y][1]); //上司没去原创 2022-04-30 11:37:44 · 688 阅读 · 0 评论 -
【**DFS**】
剪格子题目链接主要思路://要和为sum,其实就是一半为sum/2,如果无法分割,首先有一种可能就是//sum/2!=0,因此对左边第一个格子开始进行深搜 准备工作:int m,n; //行列 int map[11][11]; //放矩阵 cin>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++){ cin>>map[i][j]; sum+=map[i][j原创 2022-04-06 11:25:59 · 353 阅读 · 1 评论 -
✪ 模拟 ✪
模拟就是,题目让做什么,就做什么本篇收录模拟问题3D模型每个方块如果比相邻某个方向的高x,那它一定贡献了x的表面积,而且这样算也不会重复,在边缘处,因为开了一个值为0的大数组,所以就是贡献比0大的表面积,所以边上也不会丢掉~~~~#include<iostream>#include<string>using namespace std;int n,m; //长,宽 int city[1005][1005];int S;char c;..原创 2022-03-30 19:34:44 · 409 阅读 · 0 评论 -
【**背包dp**】
01背包,完全背包,分组背包,多重背包等原创 2022-03-26 20:25:07 · 813 阅读 · 1 评论