![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝桥杯
文章平均质量分 51
备赛2022蓝桥杯
Lydia.na
这个作者很懒,什么都没留下…
展开
-
【DFS专题训练】一维坐标的移动
问题描述输入10 2 7输出3代码实现#include <iostream>#include <queue>using namespace std;queue<pair<int,int> > q;bool vis[5005];int main(){ int n,A,B,step,now; cin>>n>>A>>B; q.push(make_pair(A,0));原创 2022-04-06 18:26:23 · 398 阅读 · 0 评论 -
【蓝桥杯备赛】2019年第十届蓝桥杯省赛真题C++ B组
文章目录题目结构填空题第一题组队第二题年号字串题目结构项目题型分值第一题结果填空5第二题结果填空5第三题结果填空10第四题结果填空10第五题结果填空15第六题程序设计15第七题程序设计20第八题程序设计20第九题程序设计25第十题程序设计25填空题第一题组队作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。每位球员担任 1 号位至原创 2022-03-30 15:50:00 · 587 阅读 · 1 评论 -
【蓝桥杯备赛】2016年第十一届蓝桥杯省赛真题C++ B组
收到了咖啡军绿色原创 2022-03-28 20:28:08 · 868 阅读 · 0 评论 -
【蓝桥杯备赛】2017年第八届蓝桥杯省赛真题C++ B组
文章目录题目结构填空题第一题 购物单第二题 等差素数列题目结构项目题型分值第一题结果填空5第二题结果填空5第三题结果填空10第四题结果填空10第五题结果填空15第六题程序设计15第七题程序设计20第八题程序设计20第九题程序设计25第十题程序设计25填空题第一题 购物单小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,原创 2022-03-28 14:23:57 · 435 阅读 · 0 评论 -
【蓝桥杯备赛】历年真题解答+知识点总结
CC150给出算法题五种解法举例法:具体例子,到一般规则(公式符号化)模式匹配法:相似问题,到现有问题(经典的变体)简化推广法:从简化版,到复杂版(修改约束条件)简单构造法:从n=1开始(递归过递推)数据结构头脑风暴法:链表?数组?二叉树?堆?栈?队列?前缀和?树桩数组?区间树?...原创 2022-03-21 14:31:09 · 19793 阅读 · 0 评论 -
【蓝桥杯备赛】2014年第五届蓝桥杯省赛真题C++ B组
文章目录题目结构填空题啤酒饮料第二题 切面条第三题 李白打酒第六题 奇怪的分式代码题第七题 六角填数蚂蚁感冒题目结构项目题型分值题型第一题结果填空3第二题结果填空5第三题结果填空9第四题代码填空11第五题代码填空13第六题结果填空17第七题结果填空21第八题程序设计15第九题程序设计25第十题程序设计31填空题啤酒饮料问题描述啤酒每罐 2.3 元,饮料每原创 2022-03-20 17:36:07 · 1785 阅读 · 0 评论 -
【蓝桥杯备赛】2013年第四届蓝桥杯省赛真题C++ B组
文章目录题目结构填空题第一题 高斯日记第二题 马虎的算式第三题 第39级台阶第七题 错误票据第八题 翻硬币第九题 带分数题目结构项目题型分值题型第一题结果填空5日期处理第二题结果填空5模拟第三题结果填空10dfs第四题结果填空10第五题代码填空15第六题代码填空15第七题程序设计20第八题程序设计20第九题程序设计25第十题程序设计25填空题第一题 高斯日记原创 2022-03-19 18:55:45 · 1189 阅读 · 0 评论 -
【蓝桥杯备赛】2020年第十一届蓝桥杯省赛第一场(7月5日)真题C++ B组 未完待续……
文章目录题目结构填空题第一题 跑步训练第二题 纪念日题目结构项目题型分值题型第一题结果填空5第二题结果填空5第三题结果填空10第四题结果填空10第五题结果填空15第六题程序设计15第七题程序设计20第八题程序设计20第九题程序设计25第十题程序设计25填空题第一题 跑步训练问题描述小明要做一个跑步训练,初始时,小明充满体力,体力值计为 10000。如果原创 2022-03-13 21:50:56 · 613 阅读 · 1 评论 -
【动态规划DP】蒜头君的日志
题目描述最长公共上升子序列问题。#include<bits/stdc++.h>using namespace std;const int maxn=1001;int dp[maxn][maxn];int a[maxn];int b[maxn];int main(){ int n,m; cin>>n>>m; for(int i=1; i<=n; i++) cin>>a[i]; for(in原创 2022-03-13 15:10:35 · 1229 阅读 · 0 评论 -
【动态规划DP】回文串
问题描述一个字符串如果从左往右读和从右往左读都一样,那么这个字符串是一个回文串。例如:”abcba”,”abccba”。蒜头君想通过添加字符把一个非回文字符串变成回文串。例如:”trit”,可以添加一个’i’ 变成回文串”tirit”。请你用程序计算出,对于一个给定的字符串,最少需要添加几个字符,才能变成回文串。输入格式输入一个长度为n(1≤n≤3000) 的字符串。(字符串只包含字母)输出格式输出最少需要添加的字符个数,占一行。样例输入trit样例输出1#include <i原创 2022-03-13 15:04:08 · 343 阅读 · 0 评论 -
【动态规划DP】蒜头君闯关
题目描述最大上升子序列的变形。相当于把增加的1换成了数组的值#include <iostream>using namespace std;int main(){ int n; cin>>n; int a[1000]; for(int i=1;i<=n;i++){ cin>>a[i]; } int sum[1000]; for(int i=1;i<=n;i++){原创 2022-03-13 14:47:01 · 555 阅读 · 0 评论 -
【动态规划DP】跳木桩
问题描述蒜头君面前有一排 n 个木桩,木桩的高度分别是h1,h2,h3…hn。蒜头第一步可以跳到任意一个木桩,接下来的每一步蒜头不能往回跳只能往前跳,并且跳下一个木桩的高度 不大于 当前木桩。蒜头君希望能踩到尽量多的木桩,请你帮蒜头计算,最多能踩到多少个木桩。输入格式第一行输入一个整数 n 代表木桩个数。第二行输入 n 个整数h1,h2,h3…hn,分别代表 n 个木桩的高度。(1≤n≤1000,1≤hi≤100000)输出格式输出一个整数,代表最多能踩到的木桩个数,占一行。样例输入63 6原创 2022-03-13 13:53:58 · 267 阅读 · 0 评论 -
【动态规划DP】蒜头君的最大子序列
题目描述#include <iostream>using namespace std;int n,ans=-10000000;int a[10000010];int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]>ans){ ans=a[i]; } } if(ans<=0原创 2022-03-13 13:42:12 · 1209 阅读 · 0 评论 -
【常见动态规划模型】
文章目录最大字段和最长上升子序列(LIS)最长公共子序列(LCS)编辑距离最大字段和用一次扫描,记录目前统计的和sum以及答案ans。当sum加上当前位置这个数还是正数的时候就继续累加sum,否则就将sum置为0。这样就舍掉了所有前缀是负数的情况,并且保证了这个子段尽可能的长了,也就是说扫描中记录的sum就是以每一个点为结尾的最大字段和,每一次如果sum比ans大就可以更新ans。最后ans就是整体的最大字段和。#include <iostream>using namespace std原创 2022-03-13 13:33:06 · 768 阅读 · 0 评论 -
【动态规划DP】墙壁涂色
题目描述Description蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 nn 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。例如,当 n=5 时,下面就是一种合法方案。蓝|红|黄|红|黄由于墙壁是一个环形,所以下面这个方案就是不合法的。蓝|红|黄|红|蓝Input一个整数 n,表示房间被划分成多少部分。(1≤n≤50)Output一个整数,表示给墙壁涂色的合法方案数。设原创 2022-03-13 10:15:26 · 269 阅读 · 0 评论 -
【动态规划DP】数组分组
题目描述现求出任意两数之间的余数再动态规划。dp[i]其中i是第几个数#include <iostream>using namespace std;int n;int s[1010][1010];int dp[1010];int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>s[i][i]; } //求出任意两数之间的乘积求余 for(int i原创 2022-03-13 09:45:19 · 940 阅读 · 0 评论 -
【动态规划DP】蒜头君的新东西
题目描述工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,蒜头君想到一个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了 m 次之后又回到了同事 A 手里。两种方法,如果接娃娃的同事不同,或者接娃娃的顺序不同均视为不同的方法。例如 1−>2−>原创 2022-03-12 20:12:40 · 97 阅读 · 0 评论 -
【动态规划DP】蒜头君爬楼梯
题目描述蒜头君很喜欢爬楼梯,但是蒜头君腿不够长,每次蒜头君最多只能一步跨越两个阶梯。比如他初始在楼底,跨越一个阶梯到达 1 号阶梯,或者跨越两个阶梯到达 2 号阶梯。如下图为了选出一种最轻松的爬楼梯的方式,蒜头君想把所有不同的到达楼顶的方式都尝试一遍。对于一共有 n 个阶梯的楼梯,蒜头君一共有多少总方法从楼底到达楼顶。由于最后答案可能很大,输出最后的答案对 100007 取模的结果。输入格式第一行输入一个整数 n(1≤n≤1000)。输出格式输出最后答案对于 100007 取模的结果。看原创 2022-03-12 18:38:53 · 204 阅读 · 0 评论 -
【动态规划DP】基础概念
文章目录常见动态规划什么是动态规划基本概念例题蒜头君回家实现捡水果🍉常见动态规划一维递推斐波那契数列:f[i]=f[i-1]+f[i-2];错排公式:f[i]=(f[i-1]+f[i-2])*(i-1);二维递推杨辉三角:f[i][j]=f[i-1][j-1]+f[i-1][j]什么是动态规划1951年美国数学家根据一类多阶段问题的特点,把多阶段决策问题变换为一系列相互联系的单阶段问题,然后逐个加以解决。与此同时他提出了解决这类问题的“最优化原理”,从而创建了解决最优化问题的一种新方法原创 2022-03-12 18:21:00 · 264 阅读 · 0 评论 -
【广度优先搜索BFS】总结
文章目录广度优先搜索广度优先搜索完成广度优先搜索的数据结构时队列。队列的主要操作包括:入队push出队pop判断队列是否为空empty统计队列元素个数size访问队首元素frontbfs是一层一层地搜索。例如如下图先将A入队,再将与A相连的B,C,D入队。A出队,现在队首是B,再将与B相连的E,F入队。B出队,现在队首是C,与C没有相连的。C出队,现在队首是D,与D相连的G,H入队……直到最后H出队,结束搜索。最后写出来的代码框架如下:void bfs(起始点){ 将原创 2022-03-08 18:35:49 · 571 阅读 · 0 评论 -
深度优先搜索模版总结+dfs总结
文章目录模版搜索:m叉dfs模版搜索:for模版递归条件可行性剪枝最优性剪枝重复性剪枝题型+例题迷宫问题连通块问题选择问题对于我来说dfs理解起来从感觉怪怪的,听老师讲就听明白,但是拿到一个新题的时候就不太会自己做,所以简单先总结一下dfs的题型及解题方法。如果一个题没有什么思路就先考虑搜索。首先对于dfs有两种大模板,第一种是m叉的搜索树dfs直接套的模版,第二种是for循环的模版(我也不知道专业术语,就先这么说吧),相较起来第一种的时间复杂度应该比第二种大。拿一个例题举个例子题目描述从n个原创 2022-03-07 20:09:21 · 453 阅读 · 1 评论 -
【深搜剪枝】正方形
题目描述类比等边三角形例题#include <iostream>using namespace std;int n,sum;int a[100];bool ok;bool vis[100];void dfs(int cnt,int s){ if(ok){ return; } if(cnt==4){ ok=true; return; } if(s==sum/4){ dfs(cn原创 2022-03-07 18:48:23 · 222 阅读 · 0 评论 -
【深搜剪枝】全排列
题目描述给你一数n,求1~n所有数字的全排列输入输入一个数n输出首先输出排列总数,后输出每一种方案#include <iostream>using namespace std;int n,ans=1;bool vis[100];bool ok;void dfs(int cnt,int num){ if(cnt==n){ cout<<num<<endl; return; } for(int i=1原创 2022-03-07 18:10:39 · 218 阅读 · 0 评论 -
深搜的剪枝策略
文章目录可行性剪枝**最优性剪枝**重复性剪枝奇偶性剪枝剪枝例题:引爆炸弹可行性剪枝通过一些判断砍掉搜索树上不必要的子树。有时候,我们会发现某个节点对应的子树状态都不是我们要的结果,那么我们其实没必要对这个分支进行搜索,砍掉这个子树,就是剪枝。一旦发现如果某些状态无论如何都不能找的最终的解,就可以将其进行剪枝。实现可行性剪枝/* 从1~30这30个数中选择8个使他的和为200 */#include <iostream>using namespace std;int n=30,k=原创 2022-03-07 17:36:08 · 475 阅读 · 0 评论 -
【抽象DFS专项训练】K个数的和
题目描述从n个数中选择k个数和为sum,求有多少种情况输入5 3 91 2 3 4 5输出2方法一:搜索树对于每个数都有两种办法第一种办法是选择:cnt+1 、s+a[i]第二种办法不选:cnt 、s结束递归的条件:当遍历完每一层回溯#include <iostream>using namespace std;int a[40];int n,k,sum,ans;//i表示层数,cnt为个数,s为和void dfs(int i,int cnt,int原创 2022-03-06 17:51:51 · 212 阅读 · 0 评论 -
抽象DFS深度优先搜索
抽象形式的dfs例题引入给定n个整数,要求选出K个数,使得选出来的K个数的和为sum借助dfs来解决这个问题。对于每一个数,枚举选或者不选两种情况,可以用dfs思想来完成这样的枚举过程。在搜索过程中,用S来记录当前选择的数值总和,k来记录选择的数的个数,deep表示当前正在枚举第几个数是否选择。第一层dfs的时候,我们可以枚举是否选第一个数,如果选第一个数则让S加上第一个数且k加一,dfs进入下一层;否则dfs直接进入到下一层。当然,这里我们还需要借助全局变量、参数或修改数组中元素的值等方式来原创 2022-03-06 17:50:51 · 227 阅读 · 0 评论 -
第九届蓝桥杯 全球变暖 dfs
题目描述你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:……………#………请你计算:依照科学家的预测,照片中有多少原创 2022-03-06 16:03:39 · 107 阅读 · 0 评论 -
【深度优先搜索DFS】
文章目录概念模版:迷宫游戏模版:迷宫最短路径问题概念深度优先搜索按照深度优先的方式进行搜索,通俗地说就是“一条路走到黑”。注意,这里的搜索指的是一种穷举的方式,把所有可行的方案都列出来,不断去尝试,直到找到问题的解。深度优先搜索和递归的区别是:深度优先搜索是一种算法,注重的是思想;而递归是一种基于编程语言的实现方式,也就是说递归是实现深度优先搜索的这个算法的手段。模版:迷宫游戏迷宫问题的解法就需要dfs。我们对上下左右四个方向,一个方向一个方向地尝试,如果沿着某个方向不能走到终点,我们就要原原创 2022-03-06 13:24:39 · 3807 阅读 · 0 评论 -
【二分法】
二分答案+check求解的问题基本求最大或最小例题对于一串数字,比如num=[1,3,4,7,1,4,3,8],可以将数组中连续若干个数合并为一组gi。如果将这串数组分成至多四组,每组数的总和的最大值Max(gi)最小是多少?#include <iostream>using namespace std;const int N=1e3+9;const int INF=0x3f3f3f3f;int n,k,a[N];//判断分组是否成立bool check(int x){..原创 2022-03-05 21:39:12 · 216 阅读 · 0 评论 -
【二分法】计蒜客习题 切割钢管
思路:切割刚拐和洛谷木材加工一样,在一个区间内找最大值(整数)。二分答案+check#include <iostream>using namespace std;int n,k;int a[10005];bool check(int mid){ int sum=0; for(int i=0;i<n;i++){ sum+=a[i]/mid; } return sum>=k;}int main(){ cin>.原创 2022-03-05 21:01:23 · 210 阅读 · 0 评论 -
【二分法】计蒜客习题 气球消消乐
问题描述蒜头君有 n 只气球,蒜头君把气球排成一排。初始时,气球都是白色,现在蒜头君想用 m 种颜色给气球涂色,如果相邻的气球的颜色相同,这 2 个气球会发生消消乐,蒜头君希望你求出会发生消消乐的涂色方法有多少种。最后答案对 10^9+7取模。输入格式输入两个整数n(1<=n<=1012),m(1<=m<=108)输出格式输出一行表示答案。样例输入3 4样例输出28思路:由于正着不好计算,就反向计算,总共涂色方案m^n,都不相邻的方式为m*(m-1)^(n-1原创 2022-03-05 15:32:12 · 271 阅读 · 0 评论 -
【两分法】对数方程 最小二乘法求方程近似解
零点存在定理如果在[left,right]区间中有解,用最小二乘法求方程近似解,mid=(left+right)/2 如果f(mid)>=0那么方程的解在[left,mid],则需要将mid给到右端点。#include <iostream>#include <cmath>using namespace std;const double eps=1e-4;double a;double f(double x){ return x+log(x)-a;}i.原创 2022-03-05 15:13:28 · 1147 阅读 · 0 评论 -
【两分法】两数之和
问题描述给定一个包含n个整数的数组a,保证每个数字不重复,从中取两个不同的数,使得他们的和值为s。求一共有多少种不同的选取方案?输入格式输入第一行两个整数n(n2<=n<=10^ 6),s(1<=s<=10^9)接下来一行输入n个整数,第i个数表示ai(-10^ 9<=ai<= 10^ 9)输出格式输出一行一个整数表示满足条件的方案数...原创 2022-03-05 14:40:33 · 187 阅读 · 0 评论 -
【基础数论】蒜头君倒水
问题描述蒜头君倒了 2 杯热水在杯子里面,第一杯里面有 a 毫升,第二杯里面有 b 毫升。水太热了,蒜头君决定通过轮流倒水的方式来让水冷下来。每次倒水蒜头君把第一杯的 x%的水倒入第二杯,把第二杯的 y% 的水倒入第一杯(蒜头君有奇特的方法,能让这一过程是同是发生的,没有先后之分),蒜头君一直重复倒水,求倒了 k 次以后 2个杯子的水的容量。输入格式第 1 行输入 2 个正整数 a,b(0≤a,b≤10^8)第 2 行输入 2 个正整数 x,y(0≤x,y≤100),第 3 行输入一个整数 k(1原创 2022-03-04 15:56:19 · 74 阅读 · 0 评论 -
【基础数论】素数距离
问题描述蒜头君请你求出区间 [l,r] 上距离最近的相邻的素数对和距离最远的相邻的素数对。3,5 是相邻的素数,2,5 不是相邻的素数。距离定义为 2 个素数的差的绝对值。比如 5,7 距离为 2。输入格式输入 2 个整数l,r(1≤l≤r≤8000000)输出格式如果 a,b(a< b) 是距离最近的素数对,c,d(c< d) 是距离最远的素数对,按照如下格式输出a,b are closest, c,d are most distant. 。如果最近或者最远有多对,输出 a 和 c原创 2022-03-04 08:41:58 · 216 阅读 · 0 评论 -
【基础数论】蒜头君的猜想
问题描述有一天蒜头君突发奇想,他有一个猜想,任意一个大于 2 的偶数好像总能写成 2 个质数的和。蒜头君查了资料,发现这个猜想很早就被一个叫哥德巴赫的人提出来了,称为哥德巴赫猜想。目前还没有证明这个猜想的正确性。蒜头君告诉你一个整数 n ,让你用这个数去验证。注意 1 不是质数。输入格式输入一个偶数 n(2<n≤8000000)输出格式输出一个整数表示有多少对 (x,y) 满足 x+y=n(x≤y) 且 x,y 均为质数。样例输入16样例输出11样例输入210样例输出22原创 2022-03-03 20:03:21 · 186 阅读 · 0 评论 -
【基础数论】取石子游戏&博弈问题
问题描述蒜头君和花椰妹在玩一个游戏,他们在地上将 n 颗石子排成一排,编号为 1 到 n。开始时,蒜头君随机取出了 2 颗石子扔掉,假设蒜头君取出的 2 颗石子的编号为 a, b。游戏规则如下,蒜头君和花椰妹 2 人轮流取石子,每次取石子,假设某人取出的石子编号为 i,那么必须要找到一对 j, k 满足 i=j−k 或者 i=j+k ,并且编号为 j,k 的石子已经被取出了,如果谁先不能取石子了,则视为输了。蒜头君比较绅士,让花椰妹先手。输入格式第一行输入一个整数 t(1≤t≤500),表示蒜头君和花原创 2022-03-03 19:43:09 · 350 阅读 · 0 评论 -
【基础数论】两仪剑法
题目描述两仪剑法是武当派武功的搞基功夫,必须两个人配合使用威力才大,同时该剑法招数变化太快太多。设武当弟子甲的招数变化周期为M,武当弟子乙的招数变化周期为N,两弟子同时使用该剑法,当两人同时使用该剑法,当两人恰好同时达到招数变化周期结束时,威力最大,此时能将邪教妖人置于死地。请计算当威力最大时,每个人都用了多少招?(用t表示)?输入数据:两个整数M,N(1<M<N<100000)输出数据:输出威力最大时出手了多少招(1<t<1000000000)输入格式首先输入一个t原创 2022-03-03 18:41:01 · 337 阅读 · 0 评论 -
【基础数论】
关于余数的一些性质(a+b)mod p = (a mod p + b mod p)mod p(a*b)mod p = (a mod p * b mod p)mod p蓝桥杯例题原创 2022-03-03 08:24:57 · 311 阅读 · 0 评论 -
【第五届蓝桥杯】斐波那契数列求余
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。样例输入10样例输出55样例输入22原创 2022-03-03 08:24:09 · 146 阅读 · 0 评论