蓝桥杯
失格夕颜
努力学习大佬们操作与思想:格局是被委屈撑大的,温柔也是懂事换来的,什么都明白的人最温柔也最冷漠。
展开
-
蓝桥杯---日志管理
#include<bits/stdc++.h>#include<vector>#define maxn 1000000using namespace std;vector<int >a[maxn+5];int n,d,k;bool judge(int x){ int len=a[x].size(); if(len<k)return false; int l=0,r=0,sum=0; sort(a[x].begin(),a[x].end());原创 2021-04-14 00:53:56 · 80 阅读 · 0 评论 -
蓝桥杯---bfs
#include <bits/stdc++.h>using namespace std;char mp[30][50]; //地图bool vis[30][50]; //是否被走过int dir[4][2] = { {1,0}, {0,1}, {-1,0}, {0,-1} }; // 按照数组方向:下,右,上,左char dirc[4] = {'D','R','U','L'};int n, m; //迷宫的行和列//对于dfs 和 bfs 来说 数组的基本信息最好放在全局变原创 2021-04-13 01:52:59 · 83 阅读 · 0 评论 -
蓝桥杯day23_七段码——并查集&&dfs
思考1:首先我们需要遍历所有情况,因此使用深搜dfs。请与全排列区分开,虽然都是用dfs 目前作者的初步判断是:全排列需要回溯(即状态恢复);灯有开与不开两种情况(分而治之),因此状态恢复后也要进行遍历。可以想象:全排列就是闪灵里面小男主迷宫走到死路,就会原路返回,且不留痕迹(防止被爸爸追上)。遍历所有情况则是题目中的LED灯,黑与亮都是它的一部分2:排列结束后需要判断亮灯的部分是否是一个整体,这需要并查集的思想:如果两个 个体 相邻且均亮灯,那么他们便是一个整体,遍历所有个体,便可以把它们全部化原创 2021-04-09 21:08:26 · 109 阅读 · 0 评论 -
蓝桥杯day22_Z字变换
有人会问了,leetcode上面不是有精美的解析了吗,画蛇添足毫无意义。答:这只是作者不想去leetcode重温经典,巩固自己思维,做笔记的一篇博客罢了,可以出门右转。愿意看看我的思路也可以向下看看思考1:总的来说这就是对字符串的处理,有人一开始可能想用二维数组,先别急,看了之后,就会自行发现大拿们的思想美妙之处。2:纵向存储,横向读取。若是二维数组,处理“掉头时”还要考虑换列操作。我们可以想象成每一行都是一个字符串,那么我们只需要处理“掉头”操作(即换行),新来的字符,只需在换行后进行插入操作即原创 2021-04-09 20:41:28 · 60 阅读 · 0 评论 -
蓝桥杯day21_回文日期
思想题目我们需要满足两个要求,一个是从当前日期开始,找到基础版的回文日期,另一个是找到满足特殊要求的回文日期。1:稍加思考可以发现一年至多一个回文日期。2:输入的是整数,但不能单纯的个位数叠加,可以只叠加年份,日和月对应改动即可。3:方便处理,转化成整型数组。这样容易判断特殊型的回文日期注意:绝对不能字符串处理,后面天数判断时使用“数字”进行判断,而不是“char。”4:月份的特殊性(最多12个月),导致年份的个位数进制从10进制变成2进制。5:年份的++操作应该放在循环体结尾处:避免开始的一原创 2021-04-09 20:05:40 · 125 阅读 · 0 评论 -
蓝桥杯day20_素数列的整合
数列思考1:对于任意区间(1-1000000)之间查找满足特殊条件的子数列组合,一般我们使用暴力遍历的方法。2:两层循环分别对应子数列的 初始位置 和 对应公差。不同的特殊条件,这两层的内外分布有所不同。题目:范围内找所有长度为6的子素数列素数列,即每一个数都是素数,额外添加一个判断素数的函数即可。#include <bits/stdc++.h>using namespace std;bool check(int num) // 检查素数{ for(int i=2原创 2021-04-03 23:41:55 · 76 阅读 · 0 评论 -
蓝桥杯day19_测试次数(dp双蛋动态规划)
题目测试次数x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。如果到了塔的最高层第n层扔没摔原创 2021-04-03 11:52:13 · 187 阅读 · 0 评论 -
蓝桥杯day18_明码_bitset(),to_string()函数使用
标题:明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。 把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节一共16行,布局是:第1字节,第2字节第3字节,第4字节....第31字节, 第32字节1234这道题目是给你一段多个汉字组成的信息,每个汉字用32个字节表示,这里给出了字节作为有符号整数的值。原创 2021-03-24 19:29:55 · 371 阅读 · 0 评论 -
蓝桥杯day17_特别数的和_短除法
代码#include <bits/stdc++.h>using namespace std;bool check(int x) //短除法判断是否有当前数字{ while(x){ if(x%10 == 2 || x%10 == 0 || x%10 == 1 || x%10 == 9) return true; x /= 10; } return false;}int main(){原创 2021-03-24 19:17:40 · 62 阅读 · 0 评论 -
蓝桥杯day17_数的分解_如何检查某个数是否有特殊数
理解1:短除法可以判断是否该整数是否拥有0-9的特殊字2:对于多个数的四则运算,有要求不能重复情况(AXX),我们可以让后面的数 = 前面的数+1(依次递增),来避免重复选。代码#include <bits/stdc++.h>using namespace std;bool check(int x,int y, int z) //短除法判断是否是不包含2和4{ while(x){ if(x%10 == 2 || x%10 == 4)原创 2021-03-24 15:51:56 · 93 阅读 · 0 评论 -
蓝桥杯day17_等差数列_求已知等差数列的最大公差
理解如何求最大公差??1:给数组排序2:减去arr[1]3:arr[2] 作为基础公差4:从3开始依次更新最大公差代码#include <bits/stdc++.h>using namespace std;int num[10001];int gcd(int a, int b){ //求公差的末班 return b==0 ? a : gcd(b,a%b);}int main(){ int n; cin>>n; for(int原创 2021-03-24 15:40:18 · 140 阅读 · 0 评论 -
蓝桥杯day17_完全二叉树的权值_求sum和最大的层数
标题一个完全二叉树,n个结点,设每层的结点权值之和为sum求解sum最大的层数(sum相等,返回最小深度)理解1:对于for循环遍历,其实我们跳出的条件可以多种多样,但是 “条件” 需要在for循环前或者for循环第一处进行一个定义2:for循环同时可以定义多个3:跳出条件可以是同时满足,也可以是满足多个中的一个4:每层循环可以使多个变量同时进行变化代码#include <bits/stdc++.h>using namespace std;int main(){原创 2021-03-24 15:29:25 · 215 阅读 · 0 评论 -
蓝桥杯day_17_年号子串-进制转换+整数转字符串
思路--------进制转换的方法(短除法)整型转字符串------------1:首先判断当前需要转换成的n进制2:开一个char类型数组(0 <= char <= n)3:开一个空的string4:核心***,空的string 来接收 余数,这个代表转换后的首位5:余数已接收,原来的整型数便可以除去进制6:while出来后,存在string里面的数字是倒序的,因此用for循环从string.size()-1 出发到 0 进行“正序”代码#include <bit原创 2021-03-24 15:15:03 · 129 阅读 · 0 评论 -
蓝桥杯day16_地宫寻宝
问题描述X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。输入格式输入一行3个整数,用空格分开:原创 2021-03-24 15:03:13 · 146 阅读 · 0 评论 -
蓝桥杯day14_跳跃游戏_动态规划简单版
跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 ,所以永远不可能原创 2021-03-18 18:36:50 · 217 阅读 · 1 评论 -
蓝桥杯day13 _蚂蚁感冒_二维数组思维拓展
中心思想蚂蚁相遇各自调头==蚂蚁相遇当作没有相遇继续前进代码#include <iostream>#include <cmath>#include <iomanip>using namespace std;int arr[10001][2];int ans=1;//初始值为1int main(){ int n; int flag; cin>>n; for(int i=0; i<n; i++)//存储每原创 2021-03-07 16:39:07 · 57 阅读 · 0 评论 -
蓝桥杯day12 _剪格子_DFS四个方向的解决思路
代码#include <iostream>using namespace std;int tem[11][11];int visit[11][11];int dx[4] = {1,0,-1,0}; //四个 方向int dy[4] = {0,1,0,-1};int m,n,sum;int isVisit(int x, int y, int num){ if(x<0 || x>=n || y<0 || y>=m) //超出边界原创 2021-03-07 16:27:21 · 135 阅读 · 0 评论 -
蓝桥杯11 _翻转的价牌_枚举的巧妙处理,数组转化为整数
题目小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。有一天,悲剧终于发生了。某个店员不小原创 2021-03-07 16:23:10 · 159 阅读 · 0 评论 -
蓝桥杯Day 10 _接雨水:动态规划与双指针解法
题目动态规划思路**代码(完整) **#include <iostream>#include <vector>using namespace std;int sumArea(vector<int>& height){ int sum=0; int n = height.size(); //共有n列 vector<int> left(n),right(n); //求每列左边和右边的最大值 fo原创 2021-03-07 16:10:18 · 78 阅读 · 0 评论 -
蓝桥杯day 9 _四平方和_多重循环的减压方法
题目巧处 ( 需记忆)1.对于平方的相关问题注意是否可以用sqrt函数2: 对于多重循环相加问题,可以通过(总和-部分),来减少一层循环3:判定一个数是否是整数:先定义 Double x再if(x==int (x))代码段#include <iostream>#include <cmath>using namespace std;int main(){ int a, b, c, n; double d; cin>>n; double Mi原创 2021-03-07 15:54:41 · 70 阅读 · 0 评论 -
蓝桥杯day 8_背包问题_DFS(未解决回溯显方案问题)
题目给定 n 件物品,物品的重量为 w[i],物品的价值为 c[i]。现挑选物品放入背包中,假定背包能承受的最大重量为V,问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?代码段#include <iostream>#include <vector>using namespace std;int n; // 物品件数int V; // 背包容量int maxValue = 0; // 最大价值,对于递归(void)一般设置全局变量vector&原创 2021-03-07 15:40:24 · 77 阅读 · 0 评论 -
蓝桥杯day 7_盛最多水容器-双指针与数组转向量
题目描述输入输出格式代码段数组输入转化成向量解决#include <iostream>#include<vector>using namespace std;int maxArea(vector<int>& height) { int l = 0, r = height.size() - 1; int area=0,ans = 0; while (l < r) { ar原创 2021-03-07 15:16:25 · 69 阅读 · 0 评论 -
蓝桥杯day-6 _翻棋子-字符串用字符数组处理的巧妙
问题描述小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:oo*oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000输出格式一原创 2021-03-07 14:49:37 · 93 阅读 · 0 评论 -
蓝桥杯day5 _缺失的第一个正数-哈希或搜索
标题:缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]文 输出:1提示:0 <= nums.length <= 300-231 <= nums[i] &l原创 2021-03-07 14:16:34 · 81 阅读 · 0 评论 -
(蓝桥杯)day4《剪邮票》——枚举、深搜、数组和memset函数理解
题目:剪邮票(网上的不错思路)求共有几种方案答案是116我们从12个数中拿出5个不重复的数 我们找出所有的情况 然后dfs判断情况是否符合题意(5个数是否联通)ps:注意一个小技巧 我们在dfs判断联通的时候 我们从一个点出发,要判断他的上下左右能不能走,观察这个图 我们会发现,上下的数字差是4左右的数字差是1 那我们只要判断差是不是1或4就知道能不能走了。但是还有一个特殊情况,4和5的差是1,但是4并不能走到5。怎么解决这个问题呢,我们重新构造一个图因为我们目的是判断连通性,那么我们关原创 2021-02-23 15:24:54 · 93 阅读 · 0 评论 -
(蓝桥杯)小组赛day3——神秘任务:动态规划、贪心算法
问题描述小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。输入格式第一行包含一个整数n,代表楼的高度。接下来n行每行一个整数ai,代表i层的楼层高度(ai <= 100)。输出格式 输出1行,包含一个整数,表示所需的最短时间。样例输入5原创 2021-02-22 22:05:38 · 298 阅读 · 1 评论