0
点赞
收藏
分享

微信扫一扫

【蓝桥杯】每日一题17天冲刺国赛

😋今日题目😋

1.金币

k=int(input())

l=0
r=10001

while l+1!=r:
    mid=(l+r)//2
    if (mid+1)*mid//2<k:
        l=mid
    else:
        r=mid
s=r*(r+1)*(2*r+1)//6-(r*(r+1)//2-k)*r
print(s)

#金币

2.优秀的拆分

n=int(input())

if n%2==1:
    print(-1)
else:
    t=[]
    x=bin(n)[2:][::-1]
    for i in range(len(x)):
        if 2**i*int(x[i])>0:
            t.append(2**i*int(x[i]))
    t=t[::-1]
    for j in range(len(t)-1):
        print(t[j],end=' ')
    print(t[-1])

3.穿越雷区

n=int(input())
dp=[]
for i in range(n):
    t=input().split()
    if 'A' in t:
        st=(i,t.index('A'))
    if 'B' in t:
        end=(i,t.index('B'))
    dp.append(t)


pre={}
dx=[-1,1,0,0]
dy=[0,0,1,-1]
queue=[st]
def judge(x,y,dir):
    if 0<=x<=n-1 and 0<=y<=n-1:
        if dir!=dp[x][y]:
            if (x,y) not in pre.keys():
                return True
    return False
        
    
def bfs():
    while queue:
        tmp=queue.pop(0)
        dir=dp[tmp[0]][tmp[1]]
        if tmp==end:
            step=1
            while pre[tmp]!=st:
                tmp=pre[tmp]
                step+=1
            print(step)
            break
        else:
            for i in range(4):
                nx,ny=tmp[0]+dx[i],tmp[1]+dy[i]
                if judge(nx,ny,dir):
                    queue.append((nx,ny))
                    pre[(nx,ny)]=tmp
    else:
        print('-1')
            
    
bfs()
#穿越雷区

4.蓝肽子序列

a=input()
b=input()
import re
def f(x):
    t=[]
    for i in range(len(x)):
        if ord(x[i])<97:
            t.append(i)
    r=[]
    for i in range(len(t)-1):
        r.append(x[t[i]:t[i+1]])
    r.append(x[t[-1]:])
    return r
def same(x,y):
    return 1 if x==y else 0
a=f(a)
b=f(b)
#dp[i][j]代表a以下标i为结尾的字符串和b以下标为j结尾的字符串的最长子序列长度
if len(a)<len(b):
    a+=[0]*abs(len(b)-len(a))
else:
    b+=[0]*abs(len(b)-len(a))
a.insert(0,'*')
b.insert(0,'@')
L=len(a)
dp=[[0]*(L) for i in range(L)]

    
for i in range(1,L):
    for j in range(1,L):
        if a[i]==b[j]:
            dp[i][j]=dp[i-1][j-1]+1
        else:
            dp[i][j]=max(dp[i][j-1],dp[i-1][j])

ans=0
for i in dp:
    ans=max(ans,max(i))
print(ans)

#蓝肽序列

🚀写在最后 

蓝桥杯临近 你是否已经做好了充足的准备?

借用小羊的一句话“只要路是对的,就不害怕遥远”。

举报

相关推荐

0 条评论