6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考

简介: 6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考

   6月1日,今天参加了第十五届蓝桥杯国赛,本人打的是pb组,做完回来就把代码复盘了一下。但由于成绩未出,答案仅供参考。

第一题:31

第二题: 没写出来

第三题:

dic={}
n,m=map(int,input().split())
ls=list(map(int,input().split()))
for i in range(1,n+1):
    dic[i]=[]
for j in ls:
    dic[j].append(0)
    for k in range(1,n+1):
        dic[k].append(abs(k-j))
li=[]
for l in dic.values():
    li.append(max(l))
for q in li:
    print(q,end=' ')

第四题:

n,m=map(int,input().split())
ls=list(map(int,input().split()))
while m:
    a_max,mp=0,-1
    for i,j in enumerate(ls):
        if j>a_max:
            a_max=j
            mp=i
    if a_max%2==0:
        ls[mp]=a_max//2
        m-=1
    else:
        ls[mp]=a_max//2+1
        m-=1
print(max(ls))
 

第五题:

思路:马走日,象走田。 bfs里面套bfs  以象可以 走的位置为end,遍历马可走的位置,步数相加取最小值。

 
n,x1,y1,x2,y2=map(int,input().split())
 
def BFSM(n,x1,y1,x2,y2):
    dirs={lambda x,y:(x+1,y+2),
          lambda x,y:(x+2,y+1),
          lambda x,y:(x+2,y-1),
          lambda x,y:(x+1,y-2),
          lambda x,y:(x-1,y-2),
          lambda x,y:(x-2,y-1),
          lambda x,y:(x-2,y+1),
          lambda x,y:(x-1,y+2)
          }
    dirs2={lambda x,y:(x-2,y+2),
           lambda x,y:(x+2,y+2),
           lambda x,y:(x+2,y-2),
           lambda x,y:(x-2,y-2),}
    seen=set()
    st=(x1,y1)
    ed=(x2,y2)
    seen.add(st)
    q=[(st,0)]
    p=[(ed,0)]
    seen_1={}
    seen_1[ed]=0
    ls=[]
    while p:
        now_1,step_1=p.pop(0)
        for dir in dirs2:
            new_1=dir(now_1[0],now_1[1])
            if 0<=new_1[0]<=n+1 and 0<=new_1[1]<=n+1 and new_1 not in seen_1.keys():
                seen_1[new_1]=step_1+1
                p.append([new_1,step_1+1])
                
    while q:
        now_node,step=q.pop(0)
        if now_node in seen_1.keys():
            kk=step+seen_1[now_node]
            ls.append(kk)
        for dir in dirs:
            new_node=dir(now_node[0],now_node[1])
            if 0<=new_node[0]<=n+1 and 0<=new_node[1]<=n+1 and new_node not in seen:
                seen.add(new_node)
                q.append([new_node,step+1])
    if ls:
        return min(ls)
    else: return -1
print(BFSM(n,x1,y1,x2,y2))

第六题:

思路:主要是考栈的使用,用字典取存储每个左括号相对应的字母个数,定义符号栈和字母栈,但是其中符号栈可以出栈,但是字母栈只索引,不出栈。

 
s=str(input())
s0="abcdefghijklmnopqrstuvwxyz"
q=int(input())
for i in range(q):
    s1,b1=map(str,input().split())
    b=int(b1)
    v=s.count(s1)
    dic={}
    if v<b:print(0)
    else:
        re=0
        stick_1=[]
        stick_2=[]
        for j in s:
            if j=="(":
                stick_1.append([j,0])
            elif j in s0:
                stick_2.append(j)
                for w in range(len(stick_1)):
                    stick_1[w][-1]+=1
            else:
                k_1,st=stick_1.pop()
                if st==0: continue
                ve=stick_2[-1:-st-1:-1]
                if ve.count(s1)>=b:
                    re+=1 
        print(re)

第七题:

思路:这道题的数据量很大,但数据很有特点,所以用了以下的定义一个目标列表来遍历这个列表,可能不能全部样例都过,但是我感觉这样会很省时间,并且可以过一多半样例。

 
n=int(input())
mod=998244353
b=str(n)[-1]
if b==0:
    print(-1)
else:
    ls=[1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,11111111111,111111111111,1111111111111,11111111111111,111111111111111,
        2,22,222,2222,22222,222222,2222222,22222222,222222222,2222222222,22222222222,222222222222,2222222222222,22222222222222,222222222222222,
        3,33,333,3333,33333,333333,3333333,33333333,333333333,3333333333,33333333333,333333333333,3333333333333,33333333333333,333333333333333,
        4,44,444,4444,44444,444444,4444444,44444444,444444444,4444444444,44444444444,444444444444,4444444444444,44444444444444,444444444444444,
        5,55,555,5555,55555,555555,5555555,55555555,555555555,5555555555,55555555555,555555555555,5555555555555,55555555555555,555555555555555,
        6,66,666,6666,66666,666666,6666666,66666666,666666666,6666666666,66666666666,666666666666,6666666666666,66666666666666,666666666666666,
        7,77,777,7777,77777,777777,7777777,77777777,777777777,7777777777,77777777777,777777777777,7777777777777,77777777777777,777777777777777,
        8,88,888,8888,88888,888888,8888888,88888888,888888888,8888888888,88888888888,888888888888,8888888888888,88888888888888,888888888888888,
        9,99,999,9999,99999,999999,9999999,99999999,999999999,9999999999,99999999999,999999999999,9999999999999,99999999999999,999999999999999]
    for j in ls:
        if j%n==0:
            print(j%mod)
            break
    else: print(-1)

第八,九,十题,无能为力了。 坐等明天出成绩吧!

目录
相关文章
|
3月前
|
存储 机器学习/深度学习 算法
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
40 3
|
3月前
|
存储 算法 测试技术
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
25 1
|
3月前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
42 4
|
3月前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
35 3
|
3月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
43 2
|
3月前
|
Java
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
2023届蓝桥杯大赛软件类国赛Java大学B组 互质 数论
29 1
|
3月前
|
存储 前端开发 算法
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
2016届蓝桥杯大赛软件类国赛Java大学B组 反幻方 暴力搜索
25 0
|
3月前
2022蓝桥杯大赛软件类国赛真题 卡牌
2022蓝桥杯大赛软件类国赛真题 卡牌
17 0
|
4月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
92 0
|
4月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
73 0