分数
题目描述

求解
fenmu=1*2**(20-1)
fenzi=sum(2**(20-i) for i in range(1,21))
print(fenzi,'/',fenmu,sep='')
今天先鸽了。
5.18
回文日期

两种方法题解:蓝桥杯2020年第十一届省赛真题-回文日期python两种方法题解(贪心+datetime)_树欲静而风不止慢一点吧的博客-CSDN博客
求解
import datetime
N=input()
year=int(N[:4])
month=int(N[4:6])
day=int(N[6:])
cur_date=datetime.date(year,month,day)
had_print_once=False # 已输出回文日期
while True:
cur_date=cur_date+datetime.timedelta(days=1)
str_date=str(cur_date).replace('-','')
if str_date==str_date[::-1]:
if not had_print_once:
had_print_once=True
print(str_date)
if str_date[0]==str_date[2] and str_date[1]==str_date[3]:
print(str_date)
break
迷宫

求解
蓝桥oj显示请求超时,在dotcpp上测,部分案例超时了。

from collections import deque
def bfs():
q=deque()
q.append([n,n])
while q:
x,y=q.popleft()
for i in range(4):
nx=dx[i]+x
ny=dy[i]+y
if nx<1 or nx>n or ny<1 or ny>n:
continue
if is_door[x][y]:
for drx,dry in door[x][y]:
if dist[drx][dry]>dist[x][y]+1:
dist[drx][dry]=dist[x][y]+1
q.append([drx,dry])
if dist[nx][ny]>dist[x][y]+1:
dist[nx][ny]=dist[x][y]+1
q.append([nx,ny])
n,m=map(int,input().split())
door=[[[] for _ in range(n+1)] for _ in range(n+1)]
dist=[[3*n for _ in range(n+1)] for _ in range(n+1)]
dist[n][n]=0
vis=[[True for _ in range(n+1)] for _ in range(n+1)]
is_door=[[False for _ in range(n+1)] for _ in range(n+1)]
dx=[-1,0,1,0]
dy=[0,1,0,-1]
for _ in range(m):
a,b,c,d=map(int,input().split())
door[a][b].append([c,d])
door[c][d].append([a,b])
is_door[a][b]=is_door[c][d]=True
bfs()
s=0
for i in range(1,n+1):
for j in range(1,n+1):
s+=dist[i][j]
print('{:.2f}'.format(s/(n*n)))