蓝桥杯
文章平均质量分 61
朱小崐
CV程序员
展开
-
最长公共子序列(dp,c++)
题目:描述:给定两个字符串A、B,求一个字符串是A和B的公共部分(公共部分可以不连续)。解法:dp,开一个二维数组dp[i][j],表示a[1]到a[i]和b[1]到b[j]最长公共子序列,比如当a是“story”b是“sbtar”时,dp[2][3]表示st和sbt比较,最长为st,所以等于2,大概是这个图表:那么当a[i]==b[j]时,dp[i][j]=dp[i-1][j-1],因为如果当前字母不相等那么一定他们两个字符串添加当前两个字母的最长子序列相同。所以当a[i]!=b[j]时,dp[原创 2021-03-18 23:37:48 · 278 阅读 · 1 评论 -
最大连续子串和(dp,C++)
题目:题目:最大连续子串和描述:给定一个数字序列,A1、A2……An,求i,j,使得Ai+……Aj最大,输出这个最大和样例:-2 11 -4 13 -5 -2输出:20方法一:枚举左右端点,for i j,需要O(n²)的时间复杂度,再算出累加和,应该要O(n³),应该过不了几个样例方法二:动态规划dp[i]的含义是最后一位是序列中第i的数字时,最大的子序列和,每次循环面临两个选择(那么我愿意称这道题为01背包),如果当前元素的前一位为结尾的最大子序列和是负数,那么如果把之前的序列添进来一定原创 2021-03-17 23:45:01 · 1202 阅读 · 0 评论 -
快速幂(C++)
快速幂:描述:求a的b次幂再取余m通常写法:开一个int ans=0,ans = ans * a % m,执行一共b次:for(int i=0;i<b;i++){ ans = ans * a % m;}cout << ans;“显然时间不够优秀”。快速幂思路: 基于二分法的思想,如果b是奇数:a的b次幂=aa的b-1次幂 ,如果b是偶数,a的b次幂=a的b/2次幂 * a的b/2次幂 。比如:2的10次幂=a的5次 * a的5次2的5次=22的4次……原创 2021-03-16 22:26:25 · 186 阅读 · 0 评论 -
素数筛法(图解,C++)
题解:找出1-100中所有的素数(质数)1、我们通常是遍历1-100,然后每个数字从2开始到根号i,只要取余等于0,则不是素数,否则就是素数来判断,像是这样:bool judge(int x) //判断x是否为素数{ for (int i = 2; i*i <= x; i++) //遍历2至根号x { if (x % 2 == 0) //若被整除,则返回假 return false; } return true; //退出循环 ,则返回真}在主函数中则是:原创 2021-03-16 13:18:15 · 1047 阅读 · 0 评论 -
并查集路径压缩(C++)
一、并查集:查找元素互相关联的集合Keep Learning 34days;合并:合并两个集合查找:判断两个元素是否在一个集合1、利用数组 father[]int father[N]; //表示元素i的最高父亲节点(根节点)如果father[i] = i,说明i是其集合的 根节点(最高点)2、开始每一个元素都是自己单独一个集合,令father[i] = i;for(int i = 0;i <= n;i++) father[i] = i;3、查找:由于每个集合只能有一个根原创 2021-03-15 21:38:23 · 2200 阅读 · 1 评论 -
算法训练 校门外的树(区间合并,C++)
试题 算法训练 校门外的树问题描述:某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入原创 2021-03-13 11:22:19 · 642 阅读 · 0 评论 -
蓝桥杯 算法训练 步与血(DFS,C++)
试题 算法训练 步与血资源限制时间限制:1.0s 内存限制:256.0MB问题描述 有n*n的方格,其中有m个障碍,第i个障碍会消耗你p[i]点血。初始你有C点血,你需要从(1,1)到(n,n),并保证血量大于0,求最小步数。输入格式 第一行3个整数n,m,c,表示棋盘大小、障碍数量和你的血量 接下来m行,每行描述一个障碍。包含三个整数x y p,分别表示障碍在第x行第y列,消耗血量为p。输出格式 如果可以到输出步数,如果不可以,输出"No"。样例输入10 10 102原创 2021-02-19 02:06:17 · 267 阅读 · 4 评论 -
算法训练 最短路(Bellman-Ford算法,蓝桥杯C++)
试题 算法训练 最短路资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式第一行两个整数n, m。接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。输出格式共n-1行,第i行表示1号点到i+1号点的最短路。样例输入3 31 2 -12 3 -13 1 2样例输出-1-2数据规模与约定对于10%的数据,原创 2021-02-13 23:40:14 · 439 阅读 · 1 评论 -
算法训练 入学考试(01 背包问题,dp动态规划,蓝桥杯C++)
试题 算法训练 入学考试资源限制时间限制:1.0s 内存限制:256.0MB问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务原创 2021-02-09 01:30:10 · 366 阅读 · 3 评论 -
算法训练 求先序排列(递归 ,蓝桥杯C++,简洁算法、代码)
算法训练 求先序排列资源限制时间限制:1.0s 内存限制:256.0MB问题描述 给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。输入格式 两行,每行一个字符串,分别表示中序和后序排列输出格式 一个字符串,表示所求先序排列样例输入 BADC BDCA样例输出ABCD前言:虽然这是一道很基础的一道题,但是我看到一种优秀思路,我就想要记录到博客里。思路与解析:这是一个给中序和后序求先序的题,我们大概的思想就是在原创 2021-02-06 00:37:45 · 910 阅读 · 2 评论 -
算法训练 装箱问题(贪心,动态规划,蓝桥杯,C++)
算法训练 装箱问题资源限制时间限制:1.0s 内存限制:256.0MB问题描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式 第一行为一个整数,表示箱子容量; 第二行为一个整数,表示有n个物品; 接下来n行,每行一个整数表示这n个物品的各自体积。输出格式 一个整数,表示箱子剩余空间。 样例输入 24 6 8原创 2021-02-04 13:23:55 · 990 阅读 · 2 评论 -
算法训练 方格取数 (双线程DP,蓝桥杯C++)
试题 算法训练 方格取数资源限制时间限制:1.0s 内存限制:256.0MB问题描述 设有NN的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。输入格式 输入的第一行为一个整数N(表示NN的方格图)原创 2021-02-04 04:01:07 · 799 阅读 · 2 评论 -
试题 算法训练 摆动序列(蓝桥杯 C/C++)
**试题 算法训练 摆动序列**资源限制时间限制:1.0s 内存限制:512.0MB问题描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 1. 序列中的所有数都是不大于k的正整数; 2. 序列中至少有两个数。 3. 序列中的数两两不相等; 4. 如果第i – 1个数比第i – 2个数大,则第i个数比第i – 2个数小;如果第i – 1个数比第i – 2个数小,则第i个数比第i – 2个数大。 比如,当k = 3时,有下面几个这样的序列: 1 2 1 3原创 2021-02-03 21:24:21 · 3805 阅读 · 15 评论