
蓝桥杯题目
小杨的蓝桥杯题目记事本
发现王国在逃公主٩(๑^o^๑)۶
这个作者很懒,什么都没留下…
展开
-
蓝桥杯题目-----二分法分巧克力(向上/向下取整问题)
#include<bits/stdc++.h>using namespace std;int n,k;//题目要求选择合适的dint h[100010],w[100010];bool check(int d){ int num=0; //看是否够分 for(int i=0;i<n;i++) num+=(h[i]/d)*(w[i]/d); if(num>=k)//够分 d可以再大 这个d也有可能 return true; else //不够分 d需要小 这原创 2022-03-17 11:25:00 · 141 阅读 · 0 评论 -
蓝桥杯题目---自行车停放(STL链表)
有 nn 辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行车的左边或右边。(e.g.停车棚里已经有 3 辆自行车,从左到右编号为:3,5,1。现在编号为 22 的第 4 辆自行车要停在 5 号自行车的左边,所以现在停车棚里的自行车编号是:3,2,5,1)。给定n辆自行车的停放情况,按顺序输出最后停车棚里的自行车编号。≤100000。输入描述第一行一个整数 n。 第二行一个整数x。表示第一辆自行车的编号。 以下 n-1 行,每行 3 个整数 x,y,z。 z=0原创 2022-03-15 11:40:12 · 362 阅读 · 0 评论 -
蓝桥杯题目---过河卒(线性dp 人为扩充网格边界,以防越界)
如图,AA 点有一个过河卒,需要走到目标 BB 点。卒行走规则:可以向下、或者向右。同时在棋盘上的 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 99 个点(图中的 P_1,P_2,和 CC)。卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B 点(n,m)同样马的位置坐标是需要给出的。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。。输入描述一行四个正整数,原创 2022-03-14 14:48:01 · 221 阅读 · 0 评论 -
蓝桥杯题目---蓝桥骑士(寻找逐渐递增的子序列 最多个数)
题目描述小明是蓝桥王国的骑士,他喜欢不断突破自我。这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a_1,a_2,…,a_n,且按顺序阻挡在小明的前方。对于这些对手小明可以选择挑战,也可以选择避战。身为高傲的骑士,小明从不走回头路,且只愿意挑战战力值越来越高的对手。请你算算小明最多会挑战多少名对手。输入描述输入第一行包含一个整数 N,表示对手的个数。第二行包含 N 个整数 a_1,a_2,…,a_n分别表示对手的战力值。输出描述输出仅一行包含一个整数表示答案。样例输入61 4原创 2022-03-11 10:56:40 · 1368 阅读 · 1 评论 -
dp状态压缩
用状态压缩表示糖果口味大佬:我们简单演示一下用状态压缩表示一包糖果中的口味。例如输入一包糖果的“22,33,55”三种口味。要把这 33 个口味压缩成二进制数 1011010110,就需要做“移位”和“或”操作:定义初始值 tmp = 0tmp=0。输入口味“2”。先做移位 1<<(2−1),得二进制数 10;然后再与 tmptmp 或,得 tmp= tmp| 10 = 10tmp=tmp∣10=10。输入口味“3”。先做移位 1<<(3−1),得二进制数 100;然后再与原创 2022-03-09 15:54:51 · 128 阅读 · 0 评论 -
蓝桥题目----线性dp例题
可以用dp处理的问题:重叠子问题(计算大问题的时候 要多次计算小问题) , 最优子结构难点:设计好dp的状态方程一维数组/二维数组 = ?以前的递归题目描述:小蓝要走楼梯,他一次可以走 1 个台阶或者2 个台阶,问走到第 n 个台阶时,一共有多少种走法?dp[n]为走到第n个台阶时的走最长子序列:元素在A,B中都有,且在AB中出现的先后顺序一样给定一个长度为 N 数组 a 和一个长度为 M 的数组 b。请你求出它们的最长公共子序列长度为多少。#include<bits/std原创 2022-03-04 17:19:59 · 170 阅读 · 0 评论 -
蓝桥杯题目-----01背包问题 每个背包只有一个(dp动态规划)
//自下而上的写法 通过小问题到大问题 填表#include<bits/stdc++.h>using namespace std;const int N = 3011;int w[N], v[N]; // 物品的价值和体积int dp[N][N];int solve(int n, int t){ for(int i=1; i<=n; i++) //物品数量 行 for(int j=0; j<=t; j++){ //背包容量 列 .原创 2022-03-04 16:11:44 · 466 阅读 · 0 评论 -
蓝桥杯题目----平面拆分(set去重 pair 直线分平面的交点)
#include<bits/stdc++.h>using namespace std;const int N = 1005;double A[N], B[N];int main(){ int n; cin>>n; pair<double, double> p; set<pair<double, double>> s; //利用set自动去重功能筛选掉重边 for(int i = 0; i < n原创 2022-03-02 09:24:31 · 226 阅读 · 0 评论 -
蓝桥杯题目----发现环(并查集检验环的问题,vector容器问题)
1.vector vt[N] 容器2.vt[a].push_back(b);//把b放到a的容器里vt[b].push_back(a); //把a放到b的容器里#include<bits/stdc++.h>using namespace std;const int N=1e5; vector<int> vt[N];int vis[N],s[N],circle[N];int num,start,step,flag; //num 环的元素个数 //start 检验环原创 2022-02-27 15:51:33 · 202 阅读 · 0 评论 -
蓝桥杯题目----蓝桥幼儿园(并查集)
算法:并查集,#include<bits/stdc++.h>using namespace std;const int maxn=8e5+5;int s[maxn];void init_set(){ for(int i=1;i<=maxn;i++) s[i]=i; //初始化 每个人的祖先都是自己}int find_set(int x){ if(x!=s[x])//x的祖先还是自己吗?是的话返回x,不是的话继续寻找 s[x]=fin原创 2022-02-22 22:54:03 · 355 阅读 · 0 评论 -
蓝桥杯题目---剪邮票(dfs/bfs的连通性检验)
答案:116思路:将0 1的一维数组排列对应到2维数组中,next_permutation()函数是生成不相同的,且比初始排列大的排列.!!重要 因为只含有0,1的数组排列会生成很多重复的.next_permutation函数写法!!do{ if(check(per)) ans++; }while(next_permutation(per,per+12)); //这个函数保证不重复dfs的连通性检验:在check函数那里,如果一直联通,一直检验,在全部检验完原创 2022-02-22 12:53:05 · 231 阅读 · 0 评论 -
蓝桥杯题目------路径之谜(用栈处理输出路径 vector容器用法)
1.题目要求输出路径:用栈来跟踪 DFS 的过程,记录 DFS 走过的路径,是最方便的。DFS 到某个格子时,把这个格子放到栈里,表示路径增加了这个格子。DFS 回溯的时候,退出了这个格子,表示路径上不再包括这个格子,需要从栈中弹走这个格子。2.容器vector:vector 既Int型的容器,与数组类似,与数组的区别是容器大小可以变,可以自定增长或缩短空间.vector的用法请点击进去vector a;容器进栈: a.push_back(5); //在a的最后一个向量后插入一个元素,其值原创 2022-02-19 13:43:38 · 434 阅读 · 0 评论 -
蓝桥杯题目:剪格子(dfs)
题目描述如下图所示,3 \times 33×3 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。本题的要求就是请你编程判定:对给定的 m \times nm×n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。如果无法分割,则输出 0。输入描述程序先读入两个整数 m,nm,n 用空格分割 (m,n<10)(m,n<10),表示表格的宽度和高度。接下原创 2022-02-18 21:11:40 · 452 阅读 · 0 评论 -
蓝桥杯题目-----跳蚱蜢(结构体函数 map queue)
算法:广度优先搜索,结构体里定义函数,stl map容器为什么需要在结构体定义函数:因为结构体里的变量每一次都在变化,每经过一次交换,字符串变化一次,步骤也增加一次.结构体函数操作请点击这个链接结构体里的变量有s和t的原因:因为么每一个s对应一个t(步骤数)queue q 指的是队列里的一个元素就是一个结构体.队列的操作点击这个链接map的操作:指mp里每一个字符串都对应着是否访问过(true or false)判重赋值操作:mp[“字符串”]=false;map操作请单击这个链接#i原创 2022-02-15 17:32:31 · 614 阅读 · 0 评论 -
蓝桥杯题目:全球变暖
算法:广搜,c++队列小知识点:坐标的变化#include<bits/stdc++.h>using namespace std;const int N = 1010;char mp[N][N];int vis[N][N];int d[4][2] = {{0,1}, {0,-1}, {1,0}, {-1,0}}; //四个方向int flag;void bfs(int x, int y) { queue<pair<int, int>> q;原创 2022-02-15 14:27:00 · 199 阅读 · 0 评论 -
蓝桥杯题目——寒假作业
应用算法:dfs,剪枝(提前终止搜索),自写全排列注意:在函数中可以将终止条件先写在if里,else里写正常执行的条件题目思路:将1-13全排列,在填入到题目中,看有几种全排列满足,ans就是几。注意除法的问题:c语言中,1/2等于0,所以除法必须化为小数才能除,否则准确性很低。本题中答案为36,1376是错误的。#include<bits/stdc++.h>using namespace std;int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13};原创 2022-02-14 12:02:34 · 436 阅读 · 0 评论