第十六届蓝桥杯大赛软件组省赛 Python研究生组 (个人回忆版)

前言

昨天终于比赛完了,昨天风刮得很大,很具有摧残作用,以至于北京、河北、天津等地的蓝桥杯都延期了。而我,一名普普通通的研二学生,也想写下这篇文章作为对这几个月的总结,老了以后自己看看曾经的青春年华,另外就是希望会对下一届比赛的学生有所帮助。
人在回忆自己的过去总是会发现时间是过得飞快的,从去年比完赛到今天,这是整整的一年了,这一年我经历了很多,有科研上的不顺利、认知上的提升、资产上的波动,现在每天也是处于比较焦虑与不开心的状态。但是,我也始终相信这就是生活,有苦有甜:有来自于方方面面的压力,也有某一道题AC的快乐,更有自己不断进步的短暂的成就感,这与钱买到的快乐是不同的。

试题回忆

试题A:偏蓝

题意

偏蓝

思路

三重循环即可

代码
import sys 
import os

if __name__=="__main__":
  ans=[]
  for red in range(256):
      for green in range(256):
          for blue in range(256):
              if blue>red and blue >green:
                  ans.append((red,green,blue))
  print(len(ans))
#5559680

试题B:IPV6

题意

在这里插入图片描述
在这里插入图片描述

思路

不会写,直接放弃

试题C:变换数组

题意

变换数组

思路

简单模拟即可

代码
n=int(input())
data=list(map(int,input().split()))
m=int(input())
for i in range(m):
  for j in range(n):
      bb=str(bin(data[j])).count('1')
      data[j]=data[j]*bb
print(*data,sep=' ') 

试题D:最大数字

题意

最大数字

思路

我用的排序,

  1. 首先全是1的元素,比如3,7,直接先拿出来
  2. 剩余的按照1出现的次数降序排列,出现1次数一样,比如8,4,按照0出现的次数升序,4,8,如果1出现的次数和0出现的次数都相同,比如5,6按照自身数值进行排序6,5,key=lambda 真好用
代码
n=int(input())
vip=[]
data=[]
for i in range(1,n+1):
  bb=str(bin(i))[2:]
  cnt1=bb.count('1')
  cnt0=bb.count('0')
  if cnt0 ==0:
      vip.append(bb)
  else:
      data.append([i,cnt0,cnt1])
data.sort(key=lambda x:(x[2],-x[1],x),reverse=True)
#print(data)
ans=''.join(vip)
for i in data:
  ans+=str(bin(i[0]))[2:]
ans=int(ans,base=2)
print(ans)

试题E:小说

题意

小说

思路

说实话,逻辑跟不上,那么就只能根据样例找找规律,99%的概率都是错的
2个人物,6章
3个人物,6+6+1(中间插进去一个C知道真相)
4个人物,6+1+6+1+6=20
5个人物:6+1+6+1+6+1+6=27

试题F:01串

题意

01串

思路

先统计n范围内的1的个数,相应长度,放在列表中,之后利用二分查询

代码
import sys
import os
from bisect import *
if __name__=='__main__':
  n=int(1e4)+1
  x=int(input())
  data=[]
  cnt=[]
  ans=''
  cnt1=0
  for i in range(n+1):
      bb=str(bin(i))[2:]
      cnt1+=bb.count('1')
      ans+=bb
      length=len(ans)
      data.append(length)
      cnt.append(cnt1)
  pos=bisect_right(data,x)
  if pos<len(data):
      
      m=data[pos-1]
      x-=m#还有多少位
      ans=cnt[pos-1]
      if x>0:
          start=pos#下一个开始的数字
          res=str(bin(start))[2:]
          ans+=res[:x].count('1')
  print(ans)  

试题G:登山

题意

登山

思路

前面浪费太多时间了,实在是没时间写了,BFS?

tips

  1. 针对我自己的考点:只能用idle编辑,电脑上有vscode,但是只有C++ debugger,没有python debugger,然后没有外网,所以就没法下载扩展。但是可以在vscode中输入(毕竟比idle输入体验那么一丢丢),然后复制到idle运行调试
  2. 编程能力思维都要提升起来,考场上考验的还是熟练度
  3. 如果你之后想要参加蓝桥杯,欢迎看看我的备赛指南,或不到一杯奶茶钱的备赛笔记,凝聚了自己刷题过程中的精华,相信你一定能站在我的肩膀上,冲击国赛,顺利保研or国家奖学金or一等奖学金or简历亮点
  4. 蓝桥杯笔记:蓝桥杯备赛笔记(超详细版)
    知乎:蓝桥杯python组备赛指南
    CSDN主页:蓝桥杯python组备赛指南
### 第十五届蓝桥杯Python B概述 #### 比详情与规则 第十五届蓝桥杯全国软件和信息技术专业人才大赛由中华人民共和国工业和信息化部人才交流中心主办,国信蓝桥教育科技(北京)股份有限公司承办。该事旨在促进软件和信息技术领域的人才培养与发展。截至2022年2月,蓝桥杯已成功举办12届,并正在进行第13届活动[^1]。 对于具体的比规则,在第十五届比中,Python B的参者需完成一系列编程挑战。这些挑战不仅测试参与者的算法设计能力,还考察其解决实际问题的能力。比通常分为级选拔和地区总决两个阶段。获得级一等奖的学生有资格晋级到全国决[^4]。 #### 题目类型与特点 关于题目方面,第十五届蓝桥杯Python B共设置了八道题目,相比以往减少了两道题目的数量。值得注意的是,本届比的难度有所降低,特别是针对Python别的设置更为友好,降低了入门门槛,使得更多初学者能够参与到这项高水平的竞争当中来[^2]。 具体来说,其中一道满分配给的题目名为《穿越时空之门》,它代表了整个试卷中的最高难度级别之一,同时也体现了命题人在创新性和趣味性上的追求。 #### 参经验分享 从个人经历来看,一位名叫小雨的同学仅用了大约十天的时间进行了集中复习和训练之后便成功获得了Python一等奖以及进入国家的机会。这表明即使基础薄弱也不必担心,只要合理规划时间和精力投入,就有可能取得优异的成绩[^3]。 另一位同学提到自己因为英语六级考试而错过了上一年度的比机会,但在看到身边朋友取得了不错的成绩后决定加入进来。这也说明良好的学习氛围和支持系统可以帮助激发个人潜力并克服困难。 ```python # 示例代码片段展示如何处理简单的输入输出问题 def solve_problem(input_data): result = input_data * 2 return result if __name__ == "__main__": test_input = int(input()) output = solve_problem(test_input) print(output) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值