励志短句:纵使长夜难明,亦会有人为你燃灯
提醒:篇幅较长,大家可以结合目录查看想要的内容
第一题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第1张图片](http://img.e-com-net.com/image/info8/0e1c9169107441a4b7f8072ec0919cbc.jpg)
思路:
1.从2023开始枚举每一个数并检查是否合法,一但枚举到合法的数,直接输出答案结束程序即可
2.怎么检查一个数是否合法呢?可以直接转化16进制后放到数组中,再遍历数组判断是否有小于10的数,没有的话就是合法的,有一个数小于10就是不满足条件的,直接返回false
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
注意这题是直接输出答案:2730
但是这里还是贴上一个代码
第二题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第2张图片](http://img.e-com-net.com/image/info8/ea6b92bb1bfa4e52a1d8bec590aaa8b5.jpg)
思路:
1.一个字母时为A~Z,有26个字母,两个字母时AA~ZZ,共有26*26=676,当有三个字母时AAA~ZZZ,共有26*26*26=17576个字母,因为2022在[676,17576]之间,故2022一定是有三个字母的。
2.此时可以用3个for循环,3个for循环依次对应第几位填那个字母,从A到Z枚举,并用一个计数器记录枚举到了那个数字,枚举到了2022就直接输出答案
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
注意这题是直接输出答案:BYT
但是这里还是贴上一个代码
第三题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第3张图片](http://img.e-com-net.com/image/info8/8795fcbd76b9478dbfdfca82b80276c0.jpg)
思路:
1.关于日期的问题,这里有一个通解,难就难在check函数,就是给你一个8位数的十进制数,如何判断它是一个合法的日期
2.这里可以按年,月,日,拆出来,可以直接让前4位数为年份,第5 6位为月份,最后两位数为日,然后特判月份与日为0的情况,还有月份大于12的情况,最后根据月份直接判断日期是否合法就行,但是还要注意一个平闰年的情况(闰年29天,平年28天,判断闰年的方法是:能被400整除一定为闰年,还有能被4整除但是不能被100整除一定是闰年)
3.关于本题:可以直接从19000101枚举到99991231,在用check函数判断每一个数是否为合法日期,是合法日期答案++。(check函数具体细节看代码)
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
注意这题是直接输出答案:70910
但是这里还是贴上一个代码
第四题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第4张图片](http://img.e-com-net.com/image/info8/21038b11077d4d26b88c68c8614bae04.jpg)
intput:
99 22 51 63 72 61 20 88 40 21 63 30 11 18 99 12 93 16 7 53 64 9 28 84 34 96 52 82 51 77
思路:
1.可以直接两重for循环枚举两个数,第一个for枚举第一个数,第二个for枚举第二个数,满足乘积大于等于2022答案++
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
注意这题是直接输出答案:189
但是这里还是贴上一个代码
第五题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第5张图片](http://img.e-com-net.com/image/info8/b1fc95565504495590179f04ebe6f985.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第6张图片](http://img.e-com-net.com/image/info8/e3d74ed7ead64a4c846141a488e894e6.jpg)
input:
110010000011111110101001001001101010111011011011101001111110
010000000001010001101100000010010110001111100010101100011110
001011101000100011111111111010000010010101010111001000010100
101100001101011101101011011001000110111111010000000110110000
010101100100010000111000100111100110001110111101010011001011
010011011010011110111101111001001001010111110001101000100011
101001011000110100001101011000000110110110100100110111101011
101111000000101000111001100010110000100110001001000101011001
001110111010001011110000001111100001010101001110011010101110
001010101000110001011111001010111111100110000011011111101010
011111100011001110100101001011110011000101011000100111001011
011010001101011110011011111010111110010100101000110111010110
001110000111100100101110001011101010001100010111110111011011
111100001000001100010110101100111001001111100100110000001101
001110010000000111011110000011000010101000111000000110101101
100100011101011111001101001010011111110010111101000010000111
110010100110101100001101111101010011000110101100000110001010
110101101100001110000100010001001010100010110100100001000011
100100000100001101010101001101000101101000000101111110001010
101101011010101000111110110000110100000010011111111100110010
101111000100000100011000010001011111001010010001010110001010
001010001110101010000100010011101001010101101101010111100101
001111110000101100010111111100000100101010000001011101100001
101011110010000010010110000100001010011111100011011000110010
011110010100011101100101111101000001011100001011010001110011
000101000101000010010010110111000010101111001101100110011100
100011100110011111000110011001111100001110110111001001000111
111011000110001000110111011001011110010010010110101000011111
011110011110110110011011001011010000100100101010110000010011
010011110011100101010101111010001001001111101111101110011101
思路:
1.连通块问题,可以直接bfs,dfs都可以解决,具体细节看代码
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
注意这题是直接输出答案:148
但是这里还是贴上一个代码
第六题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第7张图片](http://img.e-com-net.com/image/info8/15602c1889294f1e9b8760a72eb0d5a9.jpg)
思路:
简述题意:给你一周中的一天w,问过了n天后是星期几?
1.过了n天后是第几天,n为7的倍数不影响答案,故可以直接对n取模,再累加到w中
2.注意这里取模ans可能等于0的情况,此时要更改ans=7
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第七题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第8张图片](http://img.e-com-net.com/image/info8/4cde636883184b9ca040b75baabb7d72.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第9张图片](http://img.e-com-net.com/image/info8/3eddca715a3347589007505cb550cd91.jpg)
思路:
简述题意:给定一个矩形区域,和n个半径为R的圆心,问矩形中有多少个点被圆所包含?
1.数据范围较小,可以直接枚举每个点,看是否被某个圆所包含,包含直接答案++
时间复杂度 o(WHn) 1e6
AC_Code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第八题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第10张图片](http://img.e-com-net.com/image/info8/339f531ec6064c7eb842bdccc9c869cc.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第11张图片](http://img.e-com-net.com/image/info8/a565fa56ee754adfa50f82da0ab56aa4.jpg)
思路:
1.对于每一次清理次数,可以直接遍历矩阵进行标记代表被清理过,最后统计没有被标记的格子数即可
2.如果数据范围大一点的话,可以考虑差分写,
时间复杂度 o(n*m*q) 最坏跑1e6
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第九题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第12张图片](http://img.e-com-net.com/image/info8/0f9096ad77d1408bb8d4effd5dc4f6a6.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第13张图片](http://img.e-com-net.com/image/info8/aa42721baf7b4e3f8dff6bf5f273e1aa.jpg)
思路1:朴素dfs
1.数据范围较小,可以直接dfs求答案
2.但是矩阵呈回子型,或者呈s型递增递减,最坏情况时间复杂度为o(n^4),这里就可能会超时
TLE_Code:C++(这里可能会超时,最坏1e8)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
思路2:记忆化搜索
1.可以再第一步的基础上,加上一个数组,记录答案,优化搜索次数,此时的时间复杂度会将为o(n^2)
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第十题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第14张图片](http://img.e-com-net.com/image/info8/f19f78cfa09b4f85972c0df3083119b3.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第15张图片](http://img.e-com-net.com/image/info8/204706dc75f74580a536fba386fda152.jpg)
思路:线段树
1.对每一个下标索引i,枚举一遍区间[i-k,i+k],时间复杂度是会超时的,故考虑优化
2.题目是区间查询最小值,很容易想到线段树,对每一个数区间查询最小值即可,这题算是线段树的最基本操作,大家务必掌握哈,
时间复杂度:o(nlogn)
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第十一题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第16张图片](http://img.e-com-net.com/image/info8/523197794fde4a0782d22ae297717731.jpg)
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第17张图片](http://img.e-com-net.com/image/info8/4d4e80024d224ecb8fbdc4516ebbf84c.jpg)
思路:
1.直接模拟,大于1就折半(除2),并记录除2的次数
很奇怪,竟然不止10题,但是这题较为简单
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
第十二题:
题面:
![第十五(15)届蓝桥杯模拟赛题解+AC代码(第一期)_第18张图片](http://img.e-com-net.com/image/info8/61535d593110450cbd4c941d4ffd7b7d.jpg)
思路:单调栈
1.字典序最小最大问题,可以用单调栈解决
2.本题是删除k个字符使字典序最小,遍历字符串,维护一个单调不下降栈,若当前遍历的字符比栈顶元素更小则弹出栈顶元素,代表删除了一个字符,直到删除到k个字符(具体细节看代码)
3.如果到最后都没有删除k个字符,则从单调不下降栈中的栈顶位置开始删除,直到删除到k个字符,最后直接输出栈中元素就是答案
本题为最后一题,加油把这些题都给Ac了
AC_Code:C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
苏格拉底曾说,世界上最快乐的事,莫过于为了梦想而奋斗
欢迎大家关注,点赞,收藏。
如有问题,欢迎大家指正