蓝桥三十一天刷题(python组)||第八天

分数

题目描述

求解

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)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树欲静而风不止慢一点吧

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值