精华内容
下载资源
问答
  • 蓝桥杯2013-2019省赛七届赛真题一览-JavaB组 包含7年所有的省赛真题解析以及试题分析,值得收藏备赛!

    A.序章

    自己对算法并不擅长,跟ACM选手比更是相差甚远,但是确实比较喜欢算法,喜欢一些经典有趣的算法,太难的我目前可能需要花费很多时间,所以暂时不打算接触ACM级别的一些算法思想和模板。听说蓝桥杯刚好适合我这种了解一些算法,喜欢算法,但并不打算学习很难的算法思想的人。所以就报了名,当前自己并不是什么有算法天赋的选手,所以当然不能裸考,于是前段时间把往届的7年真题做了一下,下面是我的一些记录,包含了所有题的解析。有几个我暂时不太懂了就没能解释清楚,但是找了大佬的AC代码。
    关于这些代码和解析的由来:

    • 一般的题都是自己做过的,并且敲出了代码。
    • 有些题可能觉得我的思路不太好的,参考了蓝桥杯官方培训给出的代码和思想。
    • 还有一些题,自己并不是很会,于是找到了一些能够AC的代码,并加入了自己的理解,一般的都给出了出处,忘给出出处的请私聊我添加。

    B.感受

    做了7年的真题,我也谈谈我对蓝桥杯的一个感受吧。

    • 必须承认的事实是,难度比起ACM确实是远远不足,很多题是可以暴力做出来的,编程题也可以通过普通的暴力和遍历拿到一部分分数。
    • 虽然如此,但是它也有它好的地方。
    • 喜欢算法,但不想太过深究的,真的是一次很好的历练机会。里面基本上还是包括了一些常见的算法思想的,dp,递归,DFS,BFS,二分,快速幂等等,也保包含了一些常见的数据结构,二叉树,线段树,图,堆等等。
    • 题目的难度有一定的过度,整体难度应该说是中等,偶尔也会有一些ACM/OI大佬都很难做出来的题。如果自己没有能力拿到全部的分数,又有什么资格说这比赛太简单了呢,事实上,我发现历年满分的选手也都是屈指可数,就连一些ACM选手也很少有能拿到满分的。
    • 也是第一次参加这个比赛,不知道这个奖的含金量高不高,所以不做任何评判。

    C.题型走向

    再来谈谈自己对蓝桥杯这七年题型走向的看法吧。仅针对JavaB组

    • 2019年以前,Java组一直都是有代码填空这个题的,2019之后就没有了,可能觉得这种题有些好猜了?确实,是可以根据上下代码,结合一些测试用例去猜出来。
    • 2013-2017年,这5年,都是填空题数量居多,编程题一般只有3-4个,但是占的分数却很高,基本上编程题占到50%以上的分数。2018年后编程题数目逐渐多起来了。
    • 我觉得还是编程题多一点要好些,更能体现选手的水平,不至于一个题没做出来而导致整个比赛的失败。
    • 填空题前几年主要喜欢考全排列问题,最近几年喜欢考枚举。都需要很细心才行。填空的压轴难度一直在提升。
    • 编程题逐渐朝算法优化上面转,压轴题需要一些特别的思维才能做出来。
    • 总的来说,试题在往好的方向发展,往灵活的方向发展。

    D.目录一览

    • 以下是2013-2019年省赛七届赛真题解析的文章目录。
    • 前面三篇篇幅有点大,后面的分开了。
    • 上篇一般是所有填空类题目,下篇一般是所有编程类题目。
    蓝桥杯专辑
    年份链接
    2013蓝桥杯2013年省赛[第四届]-JavaB组赛题解析
    2014蓝桥杯2014年省赛[第五届]-JavaB组赛题解析
    2015蓝桥杯2015年省赛[第六届]-JavaB组赛题解析
    2016蓝桥杯2016年省赛[第七届]-JavaB组赛题解析(上)
    蓝桥杯2016年省赛[第七届]-JavaB组赛题解析(下)
    2017蓝桥杯2017年省赛[第八届]-JavaB组赛题解析(上)
    蓝桥杯2017年省赛[第八届]-JavaB组赛题解析(下)
    2018蓝桥杯2018年省赛[第九届]-JavaB组赛题解析(上)
    蓝桥杯2018年省赛[第九届]-JavaB组赛题解析(下)
    2019蓝桥杯2019年省赛[第十届]-JavaB组赛题解析(上)
    蓝桥杯2019年省赛[第十届]-JavaB组赛题解析(下)

    E.逐年分析

    • 比赛时长都是4小时。
    • 2013和2014年官网没有公布分数分布情况,其余全部取自官网。有分数的总分均是150分。
    • 每年的总结在每一年文章的末尾。
    • 代码及答案均经过了官方提供的所有测试点的测试,一般都是能保证100%分数的,如果有问题,请私聊我。
    • 难度仅供参考。

    2013

    蓝桥杯2013年省赛[第四届]-JavaB组赛题解析
    序号名称类型考点难度
    1世纪末的星期结果填空日期API的使用
    2马虎的算式结果填空枚举
    3振兴中华结果填空递归★★
    4黄金连分数结果填空大数类的使用★★
    5有理数类代码填空构造器的理解
    6三部排序代码填空排序思想
    7错误票据程序设计简单数组应用
    8幸运数程序设计数组元素的挪动★★
    9带分数程序设计全排列+check★★★
    10连号区间数程序设计区间问题★★

    2014

    蓝桥杯2014年省赛[第五届]-JavaB组赛题解析
    序号名称类型考点难度
    1武功秘籍结果填空常识
    2切面条结果填空找规律
    3猜字母结果填空数组元素的挪动★★
    4大衍数列代码填空常识
    5圆周率代码填空数学计算
    6奇怪的分式结果填空枚举+分数相等的判断
    7扑克排序结果填空带重复元素的全排列★★
    8分糖果程序设计过程模拟★★
    9地宫取宝程序设计DFS+缓存优化★★★★
    10矩阵翻硬币程序设计数学思维+大数开方★★★★

    2015

    蓝桥杯2015年省赛[第六届]-JavaB组赛题解析
    序号名称类型分值考点难度
    1三角形面积结果填空3 分常识
    2立方变自身结果填空5 分枚举
    3三羊献瑞结果填空9 分枚举
    4循环节长度代码填空11 分除法模拟
    5九数组分数代码填空15 分全排列+check
    6加法变乘法结果填空17 分枚举
    7牌型种数结果填空21 分全排列★★
    8饮料换购程序设计13 分过程模拟
    9垒骰子程序设计25 分动态规划+矩阵快速幂★★★★★
    10生命之树程序设计31 分无根树应用★★★★

    2016

    蓝桥杯2016年省赛[第七届]-JavaB组赛题解析(上)
    蓝桥杯2016年省赛[第七届]-JavaB组赛题解析(下)
    序号名称类型分值考点难度
    1煤球数目结果填空3 分找规律
    2生日蜡烛结果填空5 分枚举
    3凑算式结果填空9 分全排列+check
    4分小组代码填空11 分代码分析
    5抽签代码填空13 分递归
    6方格填数结果填空15 分全排列+check
    7剪邮票结果填空19 分全排列+DFS连通块检查★★★
    8四平方和程序设计21 分哈希枚举优化★★
    9取球博弈程序设计23 分博弈框架+缓存优化★★★★
    10压缩变换程序设计31 分线段树+前缀和★★★★

    2017

    蓝桥杯2017年省赛[第八届]-JavaB组赛题解析(上)
    蓝桥杯2017年省赛[第八届]-JavaB组赛题解析(下)
    序号名称类型分值考点难度
    1购物单结果填空5 分常识
    2纸牌三角形结果填空11 分全排列+check
    3承压计算结果填空13 分精度丢失问题★★
    4魔方状态结果填空17 分状态转换+BFS★★★★★
    5取数位代码填空7 分递归
    6最大公共子串代码填空9 分动态规划★★
    7日期问题程序设计19分枚举+日期判断★★
    8包子凑数程序设计21 分数论+完全背包★★★★
    9分巧克力程序设计23 分二分枚举优化★★★
    10k倍区间程序设计25 分前缀和+枚举+数学思维优化★★★★

    2018

    蓝桥杯2018年省赛[第九届]-JavaB组赛题解析(上)
    蓝桥杯2018年省赛[第九届]-JavaB组赛题解析(下)
    序号名称类型分值考点难度
    1第几天结果填空3 分常识
    2方格计数结果填空7 分代数几何
    3复数幂结果填空13 分数值估计+大数类使用★★
    4测试次数结果填空17 分动态规划+极限思想★★★
    5快速排序代码填空9 分分治思想★★
    6递增三元组程序设计11 分前缀和+二分法★★★
    7螺旋折线程序设计19 分找规律★★★
    8日志统计程序设计21 分滑动窗口★★★
    9全球变暖程序设计23 分DFS★★★★
    10堆的计数程序设计25 分堆+乘法逆元★★★★★

    2019

    蓝桥杯2019年省赛[第十届]-JavaB组赛题解析(上)
    蓝桥杯2019年省赛[第十届]-JavaB组赛题解析(下)
    序号名称类型分值考点难度
    A组队结果填空5 分枚举
    B不同子串结果填空5 分枚举
    C数列求值结果填空10 分大数末位处理
    D数的分解结果填空10 分枚举
    E迷宫结果填空15 分DFS迷宫问题★★★
    F特别数的和程序设计15 分枚举
    G外卖店优先级程序设计15 分过程模拟优化★★
    H人物相关性程序设计20 分差分数+前缀和★★★
    I后缀表达式程序设计20 分后缀表达式+数学思维★★★
    J灵能传输程序设计25 分前缀和+数学思维★★★★

    F.写在最后的话

    • 分析往年试题能够清楚这个比赛主要倾向于考察什么,但永恒不变的就是个人的编码能力,调试能力,算法思维,数学思维。
    • 其实比赛最重要的不是拿奖,更不是看这个奖的含金量有多高,而是为比赛准备的过程中所学习到的知识。

    ATFWUS --Writing 2021-2-2

    展开全文
  • 蓝桥杯单片机记录2019

    千次阅读 2018-12-25 21:22:58
    蓝桥杯单片机省赛记录2019 省赛必考模块 1. LED 2. 数码管显示 3. DS18B20 4. DS1302 5. IIC、AD转换 省赛历年必做真题 1. 第四届(模拟智能农田灌溉系统) 2. 第五届(温度检测与控制装置) 时钟 IIC AD 独立按键 ...

    蓝桥杯单片机省赛记录2019

    省赛必考模块
    1. LED
    2. 数码管显示
    3. DS18B20
    4. DS1302
    5. IIC、AD转换

    省赛历年必做真题
    1. 第四届(模拟智能农田灌溉系统)
    2. 第五届(温度检测与控制装置)

    1. 时钟 IIC AD 独立按键 VS 五届:温度 矩阵按键
    2. 独立按键 逻辑复杂 VS 五届:矩阵按键 逻辑简单

    主要任务

    • 熟悉使用DS1302驱动程序
    • 熟悉使用DS18B20驱动程序
    • 熟悉使用IIC、AD转换驱动程序
    • 程序逻辑处理

    单片机脉宽调制方法

    在做第七届试题时遇到需要输出模拟脉宽

    利用定时器中断输出脉宽
    信号频率为1KHz,1KHz = 1毫秒`

    void Time1() interrupt 3    //定时器10微妙中断一次
    	{
       	 	value1++;//记录中断次数
       	 	
        		if(value1 >= 100)//10微秒中断100次为1毫秒 = 1KHz
       		 {
               	 	value1 = 0;
              	  	P34 = 0;//脉宽模拟引脚
       	 	}
        		if(value1 < pluse)//pluse为脉宽值 20% 30% 70%
       	       	 P34 = 1;		//此区间输出脉宽
       
        		else
          	  	P34 = 0;
    	}
    

    脉宽值pluse设置20%
    在这里插入图片描述

    脉宽值设为70%
    在这里插入图片描述

    展开全文
  • 蓝桥杯题解|2019|Python版

    千次阅读 2020-08-20 10:52:11
    2019 第十届蓝桥杯C/C++ 省赛B组题解 1. 试题 A: 组队 可以考虑使用 Excel 进行辅助计算。 答案:490 2. 试题 B: 年号字串 特殊的进制转换——十进制转二十六进制 27%26=1……1(即 AA)28%26=1……2(即 AB)329%...

    2019 第十届蓝桥杯C/C++ 省赛B组题解

    1. 试题 A: 组队

    可以考虑使用 Excel 进行辅助计算。


    答案:490

    2. 试题 B: 年号字串

    特殊的进制转换——十进制转二十六进制

    27%26=1……1(即 AA)
    28%26=1……2(即 AB)
    329%26=12……17(即 LQ)
    2019%26=77……17,又 77%26= 2……25(即 BYQ)

    答案:BYQ

    3. 试题 C: 数列求值

    # 不能采用递归的方法,会爆栈
    n = int(input())
    d = 0
    
    a=b=c=1
    if n == 1 or n == 2 or n == 3:
        d = 1
    else:
        for i in range(4, n+1):
            d = (a+b+c)%10000
            a, b, c = b%10000, c%10000, d%10000 
    
    
    print(d)
    # output: 4659
    

    4. 试题 D: 数的分解

    n=2019
    
    def fun(t):
        # 判断是否包含 2 和 4。
        if '2' in str(t) or '4' in str(t):
            return True
        else:
            return False
    
    result = []
    
    for i in range(1, n+1):
        if fun(i):
            # 如果包含数字,则退出本层循环。
            continue
        for j in range(1, n+1):
            if fun(j):
                continue
            k = n - i - j
            if fun(k) or k<=0:
                # 注意 k 可能为负数。 
                continue
            if i == j or j == k or i == k:
                continue
            result.append(
                           tuple( 
                                    sorted([i, j, k])
                                )
                        )
            # 保存所有满足情况的条件。
            # 注意 Python 中的 list 无法使用 set 去重。
    
    
    print(len(set(result)))
    # 使用 set 函数去重复,使用 len 求得方法的个数。
    
    # output: 40785
    

    5. 试题 E: 迷宫

    from pprint import pprint
    from queue import Queue
    # queue 是 Python 自带的库。
    
    string = '''010000
    000100
    001001
    110000'''
    
    string_list = string.split('\n')
    cols = len(string_list[0])
    rows = len(string_list)
    # 求迷宫的行数和列数
    
    for i in range(len(string_list)):
        string_list[i] = '1' + string_list[i] + '1'
    string_list = [(cols+2)*'1'] + string_list + [(cols+2)*'1']
    visited = [list(map(int, list(i))) for i in string_list]
    # 为迷宫加上边界。
    
    x_dire = [0, 1, 0, -1]
    y_dire = [1, 0, -1, 0]
    # 初始化方向数组
    
    prev = [[(-1, -1)]*(cols+2) for i in range(rows+2)]
    # 用于保存前一个节点
    
    visited[1][1] = 1
    que = Queue()
    que.put((1,1))
    # 以(0,0)为起点开始移动
    
    
    while que.qsize() != 0:
        node = que.get()
        for i in range(4):
            x = node[0] + x_dire[i]
            y = node[1] + y_dire[i]
            if visited[x][y] != 1:
                visited[x][y] = 1
                prev[x][y] = (node[0], node[1])
                que.put((x, y))
    # 找出前一个点的位置
    
    route = []
    def printf(node):
        if node == (-1,-1):
            return
        route.append(node)
        printf(prev[node[0]][node[1]])
    printf((rows, cols))
    # 找出完整的路线
    
    dire = {0:'R', 1:'D', 2:'L', 3:'U'}
    result = ''
    while len(route) != 1:
        a = route.pop()
        b = route[-1]
        for i in range(4):
            x = a[0] + x_dire[i]
            y = a[1] + y_dire[i]
            if (x, y) == b:
                result += dire[i]
    
    print(result)
    # output: DRRURRDDDR
    

    6. 试题 F: 特别数的和

    n = int(input())
    
    temp = []
    for i in range(n+1):
        string = str(i)
        if '2' in string or '0' in string or '1' in string or '9' in string:
            temp.append(i)
    result = sum(temp)
    
    print(result)
    # input: 40
    

    7. 试题 G: 完全二叉树的权值

    import math
    
    n = int(input())
    nums = list(map(int, input().split()))
    
    h = int(math.log(n+1, 2))
    # 求解二叉树的高度。
    
    ss = []
    for i in range(h):
        s = 0
        for j in range(2**i, 2**(i+1)):
            k = j-1
            s += nums[k]
        ss.append(s)
    # 对每个深度的权值进行相加。
    
    max_s = max(ss)
    max_h = -1
    for i in range(len(ss)):
        if max_s == ss[i]:
            max_h = i + 1
    print(max_h)
    # 找到权值最高的深度
    
    # input:7
    # 1 6 5 4 3 2 1
    # output:2
    

    8. 试题 H: 等差数列

    n = int(input())
    nums = list(map(int, input().split()))
    
    nums.sort()
    k = 100000
    # 对列表进行排序
    
    plist = [nums[i] - nums[i-1] for i in range(1, n)]
    # 求解列表的差值
    
    def fun(a, b):
        while b != 0:
            a, b = b, a%b
        return a
    # 求解最小公倍数函数
    
    minq = 1000000
    for i in range(1, len(plist)):
        q = fun(plist[i-1], plist[i])
        if q < minq:
            minq = q
    # 找到所有差值中的最小公倍数
    
    res = 1
    minn = min(nums)
    maxn = max(nums)
    while minn != maxn:
        minn += minq
        res += 1
    # 求解数列中数字的个数
    
    if 0 in plist:
        res = n
    # 当公差为 0 时,数列中数字的个数为当前数字的个数。
    
    print(res)
    
    # input: 5
    # 2 6 4 10 20
    # output: 20
    

    9. 试题 I: 后缀表达式

    n, m = list(map(int, input().split()))
    nums = list(map(int, input().split()))
    abs_nums = list(map(abs, nums))
    
    result = 0
    s = sum(abs_nums)
    
    if m == 0:
        result = s
    else:
        if min(nums) > 0:
            result = s - min(abs_nums) * 2
        else:
            result = s 
    
    print(result)
    # input: 5 5
    # 1 -2 -3 -4 5 -6 -7 -8 -9 -10 -11
    # output: 66
    

    参考教程:https://blog.csdn.net/weixin_43302818/article/details/88805530

    10. 试题 J: 灵能传输

    不会(

    展开全文
  • 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。... a = 2019 b = 324 count = 1 for i in range(2019): if a > b: a -= b count += 1 elif a < b: b -= a count += 1 e

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

    问题描述

    当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会切出多少个正方形?

    解决方案

    要从一块矩形材料中切出最大的正方形,以矩形最短的一条边为正方形的边长,切割出最大正方形。因为按照一条边来切割正方形剩下的图形一定也会是一个矩形,所以我们可以将剩下的两条边进行长短的比较,然后将较长的那条边作为下一个切割的正方形的边长。我们按照编程思维,运用一个循环,加上条件语句,对两条边长度比较,长边减去短边的值,然后将切割数加一。

    接下来展示完整的代码。

    a = 2019

    b = 324

    count = 1

    for i in range(2019):

         if a > b:

             a -= b

             count += 1

         elif a < b:

             b -= a

             count += 1

         e

    展开全文
  • [蓝桥杯][2019年第十届真题]等差数列时间限制: 1Sec 内存限制: 128MB题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。现在给出这 N 个整数,小明想...
  • [蓝桥杯][2019年第十届真题]后缀表达式给定 N 个加号、M 个减号以及 N + M + 1 个整数 A1, A2, · · · , AN+M+1,小 明想知道在所有由这 N 个加号、M 个减号以及 N + M + 1 个整数凑出的合法的 后缀表达式中,结果...
  • [蓝桥杯][2019年第十届真题]修改数组 时间限制: 1Sec 内存限制: 128MB 提交: 234 解决: 36 题目描述 给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数。 现在小明要按以下方法将...
  • 小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对 应 28,AZ 对应 52,LQ 对应 329。 请问 2019 对应的字符串是什么? ...
  • 给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数...
  • 题目 2304: [蓝桥杯][2019年第十届真题]特别数的和 题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 ...
  • 矩阵的每个位置只有两...可以先从 [0, numState - 1] 里面挑出符合条件的数存进一个数组 stateAllowed,所谓“符合条件”就是这些数的二进制表示没有连续 3 个 1,例如 8 = (1000)2 是符合条件的,而 7 = (0111)2 和 1
  • s=a[1]*1000+a[2]*100+a[3]*10+a[4]; } return s; } main() { int count=0; int a,b,c; for(a=1;a<2019;a++) { if(reso(a)!=0) continue; for(b=a+1;b<2019;b++) { if...
  • [蓝桥杯][2019年第十届真题]等差数列 时间限制: 1Sec 内存限制: 128MB 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。 现在给出这 N 个整数,小明...
  • 解题思路:状态压缩+动态规划,用二进制存储每个糖果是否买过(1表示买,0表示没买),20种糖果都买的只有(1<<20)−1(1<<20)-1(1<<20)−1,给每一个数的状态都初始化标记,给每一袋糖果的种类...
  • 三种情况: (1),负号个数为零,直接全加起来 ... 假设a[1:k]是负数,a[k+1:n+m+1]是正数,m<=k。 总可以化为 -(a[1]+a[2]+..a[i])-(a[i]+a[i+1]..a[j])-....-(a[z]+a[z+1]...+a[k]);(i<j<z<k); ...
  • 题目链接:旋转 解题思路:分清楚哪个是内循环,...#define mem1(h) memset(h,-1,sizeof h) #define mem0(h) memset(h,0,sizeof h) #define mcp(a,b) memcpy(a,b,sizeof b) using namespace std; typedef long long
  • 先上代码 public class C2019 { public static void main(String[] args) { // TODO 自动生成的方法存根 long a [] = new long[20190325]; a[1] = 1; a[2] = 1; a[3] = 1; ...
  • 子串长度从1开始枚举总长s.length 对于每一个给定长度i: 从头开始枚举最后一个长度为i的子串,将子串加set集合中 */ public class _t02不同子串2 { public static void main(String[] args) { // ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,071
精华内容 2,028
关键字:

蓝桥杯1到2019