蓝桥杯
蓝桥杯的刷题记录
chase__young
这个作者很懒,什么都没留下…
展开
-
蓝桥杯集训第一周刷题笔记(1.17-1.21)
1.生日蛋糕(深搜+剪枝)1.1题目描述1.2输入输出样例1.3解题思路深度优先搜索,从最底层向上层搜索,每一层枚举可能的半径和高度,判断是否合法,合法则继续搜索上一层。需要剪枝的情况:上层最小体积+目前体积>目标体积上层最小侧面积+目前面积>现有答案剩下的侧面积+目前面积>现有答案1.4源代码#include<bits/stdc++.h>#define maxm 30using namespace std;int n,m,mins[maxm],m原创 2022-01-23 18:31:25 · 424 阅读 · 1 评论 -
蓝桥杯2014年第五届真题-地宫取宝(DFS+动态规划)
1.题目描述2.输入输出样例3.解题思路很明显,这是一个dfs进行暴力搜索的题,但只使用DFS很容易超时,所以要进行剪枝,即为记忆化搜索。同时,定义状态dp[x][y][num][maxv]。这代表第x行第y列,此时的获得了num个宝物,宝物中的最大价值为maxv。状态为1表示一种方案,状态为0表示不是一种方案。4.源代码#include<bits/stdc++.h>#define N 1000000007 using namespace std;int n,m,k;int m原创 2022-01-12 15:55:48 · 151 阅读 · 0 评论 -
蓝桥杯2013年第四届真题——危险系数(图论中的DFS)
1.题目描述2.输入输出样例3.解题思路很明显的DFS搜索图的问题,采用邻接矩阵建图。这里最关键的是怎么去搜索,我这里采用的搜索方法是搜索出所有路径,每搜索出一条路径ans++。同时,对应的这条路径上的每个点都相应的+1。最后DFS搜索完成后,如果对应的b[搜索过的点下标]==ans,就说明该点是每一条路径都要经过的点,即为关键点。最后统计出这样的点有多少个即可。(注意剪枝)4.源代码#include<bits/stdc++.h>using namespace std;#def原创 2021-11-30 20:30:53 · 209 阅读 · 0 评论 -
蓝桥杯2014年第三届真题——剪格子(DFS非完全正确解法)
1.题目描述2.输入输出及样例3.解题思路本道题就是经典的DFS算法问题,从左上角最顶格开始,不停地向周围深搜,直到满足sum/2为止,并记录下步数,每进行一次深搜就比较一下步数,将最小的步数记录下来。注意设置一个vis[],记录在一次DFS中被访问过的格子。这题用DFS最大的漏洞在于,会出现如下图的T型剪法,由于DFS的特性是一笔画构成的路径,所以像这种T型剪法能满足要求但是DFS无法探索出。但是由于蓝桥的后台测试数据很水,所以用这种解法居然可以被完全AC。至于正确的解法,我这种小菜鸡不知道怎原创 2021-11-30 18:41:34 · 254 阅读 · 0 评论 -
蓝桥杯历届试题——九宫重排(双向BFS)
1.题目描述2.输入输出及样例3.解题思路采用双向BFS,在刚开始传入参数时,将初态的dirmat设置为1,终态的dirmat设置为2。cntmat代表的是矩阵x累计所花费的步数。dirmat代表的是矩阵x的BFS方向(1代表正向,2代表反向)进入while循环后,不断的取队首元素,并在四个方向进行nextmat。对每一次nextmat的结果进行判断,如果下一个矩阵可行并且在当前方向上没有被访问过,则进入下一个判断:若正向与逆向相遇,则直接返回答案。否则,sucmat矩阵入队,同时该矩阵的原创 2021-11-29 20:17:59 · 583 阅读 · 0 评论 -
蓝桥杯2014年第五届省赛真题——兰顿蚂蚁(模拟)
1.题目描述2.输入输出及样例3.解题思路这是一道模拟题,注意好两个状态即可:一个是蚂蚁当前的朝向,一个是当前所在格子的颜色。而蚂蚁的朝向除了初始时的朝向外,是由当前蚂蚁的格子的颜色决定的。所以重点关注当前格子的颜色。根据当前各自颜色,进行转向的调整以及前进。另外,要注意一点,每次要在蚂蚁移动之前,改变格子颜色(但是移动还是按照原格子颜色来)4.源代码#include<bits/stdc++.h>using namespace std;int m,n;int x,y,k;c原创 2021-11-23 22:10:23 · 106 阅读 · 0 评论 -
蓝桥杯2013年国赛A组——网络寻路(DFS和中转边巧解)
蓝桥杯2013年国赛A组——网络寻路1.题目描述2.输入输出3.样例输入和输出4.题目分析1.首先明确,题目中的目的地有两种,一种是回到原点,一种是到达没有到达的地方2.在路径中经过的点不能有重复的点3.有题目可知,4 1 2 3和3 2 1 4是两条不同的路径4.给出题目中样例的图示5.解题思路思路一:DFS暴力求解1.使用vis[]数组记录经过的点;2.使用DFS寻找可能的路径,因为路径的长度是4,那么当寻找路径上的前3个点的时候,如果可以从前一个点走到当前的点,并且当前原创 2021-11-15 22:16:36 · 1505 阅读 · 2 评论 -
蓝桥杯历届试题——蚂蚁感冒(模拟)
1.题目描述2.输入输出3.输入输出样例4.解题思路首先对于本题,有一个更高层的抽象:题目中说到两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。其实这就等同于两只蚂蚁互相路过继续沿杆方向前进,而得了感冒的蚂蚁,则会将感冒传染给从它身边路过的蚂蚁。接下来就是要分不同的情况去讨论了,首先是最容易理解的两种情况:黑色表示初始就感冒的蚂蚁,红色表示本次实验中不会感冒的蚂蚁,蓝色表示是在本次实验中被传染感冒的蚂蚁。(但是想想看,还有两种特殊情况)特殊情况是这样的:在这种情况中,没有一只蚂蚁会原创 2021-11-01 08:25:04 · 439 阅读 · 0 评论 -
蓝桥杯2014年第五届真题——斐波那契(矩阵快速幂)
蓝桥杯2014年第五届真题——斐波那契(矩阵快速幂)1.题目描述2.输入输出3.样例输入输出4.解题思路思路一:暴力求解最常规的思路,一看到斐波那契数列就用递归去写,因此可以写一个斐波那契的函数,然后调用函数来写#include<bits/stdc++.h>using namespace std;int fb(int n){ if(n==1 || n==2) return 1; else return fb(n-1)+fb(n-2);}int main(){ in原创 2021-11-15 09:20:48 · 949 阅读 · 0 评论 -
蓝桥杯2014年第五届真题-分糖果(模拟)
蓝桥杯2014年第五届真题-分糖果题目描述输入要求输出要求样例输入输出解题思路:采用函数式编程的思想,要解决问题应当有两个子操作:一个是要让每个小朋友将自己一半的糖果分给左手边的小朋友;另一个是让老师给每次给奇数个糖果的小朋友再分一个糖果。循环上述两个操作,直到每个小朋友的糖果数相等为止,对应函数judge来判断。代码如下:#include<bits/stdc++.h>using namespace std;#define maxn 105int a[maxn]原创 2021-10-28 21:17:29 · 166 阅读 · 0 评论