第十六屆藍橋杯大賽軟件賽省賽 Python 大學 B 組 部分題解

題面鏈接Htlang/2025lqb_python_b

個人覺得今年這套題整體比往年要簡單許多,但是G題想簡單了出大問題,預估5+0+10+10+15+12+0+8=60,道阻且長,再接再厲

A: 攻擊次數

答案:103?181?題目沒說明白每回合是不是只能使用一個英雄?

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():xl = 2025cnt = 0for i in range(1, 2025):cnt += 1xl -= 5if i % 2 == 1:xl -= 15else:xl -= 2if i % 3 == 1:xl -= 2elif i % 3 == 2:xl -= 10elif i % 3 == 0:xl -= 7if xl <= 0:breakprint(i, xl)print(cnt)T = 1
for i in range(T):solve()

B: 最長字符串

答案:afplcu(洛谷的答案)

# # 考場錯誤解
# def I():
#     return input()# def II():
#     return int(input())# def MII():
#     return map(int, I().split())# def LMII():
#     return list(MII())# def solve():
#     with open(r'words.txt', 'r') as file:
#         data = file.readlines()#     dic = {}
#     for i in range(len(data)):
#         x = data[i].strip()
#         data[i] = list(x)
#         dic[x] = 0
#         data[i].sort()
#         dic[x] = data[i]#     can = set()
#     for i in range(100):
#         for x in data:
#             if len(x) == i + 1:
#                 if len(x) == 1:
#                     can.add(tuple(x))
#                 else:
#                     if tuple(x[:len(x) - 1]) in can:
#                         can.add(tuple(x))
#     cnt = 0
#     for x in can:
#         if len(x) > cnt:
#             cnt = len(x)
#     res = []
#     for x in can:
#         if len(x) == cnt:
#             res.append(x)
#     # print(dic)
#     print(res)
#     for x in dic:
#         # print(tuple(dic[x]))
#         if tuple(dic[x]) == res[0]:
#             print(x)# T = 1
# for i in range(T):
#     solve()# 正解
def is_beautiful_words(words):"""計算所有優美單詞,并返回一個字典:key: 單詞長度value: 集合,每個元素為 (word, sorted(word)) 表示已經確認的優美單詞"""# 按長度升序排序(長度相同時字典序排序)words_sorted = sorted(words, key=lambda w: (len(w), w))# 用于存儲每個長度的優美單詞beautiful_by_length = {}for word in words_sorted:l = len(word)if l == 1:# 長度為1的單詞自動是優美字符串(只要在單詞本中)beautiful_by_length.setdefault(1, set()).add( (word, word) )  # 此處 sorted(word) == wordelse:# 先看是否存在長度為 l-1 的優美單詞if (l - 1) not in beautiful_by_length:continue# 取當前單詞的前 l-1 個字符,并計算其排序結果prefix = word[:-1]sorted_prefix = ''.join(sorted(prefix))# 檢查是否存在一個長度為 l-1 的優美單詞,其排序后的字符與 prefix 一致found = Falsefor bw, bw_sorted in beautiful_by_length[l - 1]:if bw_sorted == sorted_prefix:found = Truebreakif found:beautiful_by_length.setdefault(l, set()).add( (word, ''.join(sorted(word))) )return beautiful_by_lengthdef find_longest_beautiful_word(filename):with open(filename, "r", encoding="utf-8") as f:# 每一行一個單詞,去除空白符words = [line.strip() for line in f if line.strip()]beautiful_by_length = is_beautiful_words(words)if not beautiful_by_length:return ""# 找到存在的最大長度max_len = max(beautiful_by_length.keys())# 在最大長度中,找出字典序最小的那個單詞candidates = [word for word, _ in beautiful_by_length[max_len]]result = min(candidates) if candidates else ""return resultif __name__ == "__main__":# 假設文件名為 words.txtresult = find_longest_beautiful_word("words.txt")print("最長的優美字符串為:", result)

C: LQ 圖形

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():w, h, v = MII()for i in range(h):print("Q" * w)for i in range(w):print("Q" * (w + v))T = 1
for i in range(T):solve()

D: 最多次數

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():s = I()check = {'lqb', 'lbq', 'qlb', 'qbl', 'blq', 'bql'}res = 0i = 0# print(len(s))while i < len(s) - 2:# print(i, s[i:i + 3])if s[i:i + 3] in check:res += 1i += 2i += 1print(res)T = 1
for i in range(T):solve()

E: A · B Problem

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():L = II()res = 0lst = [0] * (L + 5)for i in range(1, L + 1):for j in range(1, L + 1):if i * j >= L:breaklst[i * j] += 1pre = lst.copy()for i in range(1, L):pre[i] += pre[i - 1]for i in range(1, L):cnt1 = icnt2 = L - ires += lst[cnt1] * pre[cnt2]print(res)T = 1
for i in range(T):solve()

賽時對拍

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n):res = 0for i in range(1, n + 1):for j in range(1, n + 1):for k in range(1, n + 1):for l in range(1, n + 1):if i * k + j * l <= n:res += 1# print((i, k), (j, l))print(res)def solve2(L):res = 0lst = [0] * (L + 5)for i in range(1, L + 1):for j in range(1, L + 1):if i * j >= L:breaklst[i * j] += 1pre = lst.copy()for i in range(1, L):pre[i] += pre[i - 1]for i in range(1, L):cnt1 = icnt2 = L - ires += lst[cnt1] * pre[cnt2]print(res)T = 1
for i in range(T):L = II()solve1(L)solve2(L)

F: 園藝

賽時代碼,可能超時

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve():n = II()data = LMII()res = 1cnt = 1for i in range(1, n):if data[i] > data[i - 1]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)if res == 1 or res == n:print(res)returnfor jg in range(2, n):  # 間隔if res > (n - 1) // jg + 1:breakfor st in range(n - jg):cnt = 1for idx in range(st + jg, n, jg):if data[idx] > data[idx - jg]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)print(res)T = 1
for i in range(T):solve()

賽后優化及對拍

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n, data):res = 1cnt = 1for i in range(1, n):if data[i] > data[i - 1]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)if res == 1 or res == n:print(res)returnfor jg in range(2, n):  # 間隔if res > (n - 1) // jg + 1:breakfor st in range(n - jg):cnt = 1for idx in range(st + jg, n, jg):if data[idx] > data[idx - jg]:cnt += 1else:res = max(res, cnt)cnt = 1res = max(res, cnt)print(res)def solve2(n, data):dp = [[1 for _ in range(n + 1)] for _ in range(n + 1)]for i in range(0, n):for j in range(0, i):if data[i] > data[j]:dp[i][i - j] = dp[j][i - j] + 1print(max([max(d) for d in dp]))T = 1
for i in range(T):n = II()# data = LMII()import randomdata = [random.randint(1, 2 ** 20) for _ in range(n)]import timet1 = time.time()solve1(n, data)t2 = time.time()solve2(n, data)t3 = time.time()print(t2 - t1, t3 - t2)

G: 書架還原

# # 考場錯誤解
# def I():
#     return input()# def II():
#     return int(input())# def MII():
#     return map(int, I().split())# def LMII():
#     return list(MII())# def solve():
#     n = II()
#     data = [0] + LMII()
#     res = 0
#     for i in range(1, n + 1):
#         if i != data[i]:
#             if i == data[data[i]]:
#                 res += 1
#                 x = data[data[i]]
#                 data[data[i]] = data[i]
#                 data[i] = x
#     print(res, data)
#     cnt = 0
#     for i in range(1, n + 1):
#         if i != data[i]:
#             cnt += 1
#     if cnt:
#         print(res + cnt - 1)
#     else:
#         print(res)# T = 1
# for i in range(T):
#     solve()# 正解
n = int(input())
a = list(map(int, input().split()))
visited = [False] * n
ans = 0for i in range(n):if not visited[i] and a[i] != i + 1:count = 0j = iwhile not visited[j]:visited[j] = Truecount += 1j = a[j] - 1ans += count - 1print(ans)

H: 異或和

賽時代碼,超時

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1():n = II()data = LMII()res = 0for i in range(n - 1):for j in range(i + 1, n):res += (data[i] ^ data[j]) * (j - i)print(res)T = 1
for i in range(T):solve1()

賽時對拍,超時

def I():return input()def II():return int(input())def MII():return map(int, I().split())def LMII():return list(MII())def solve1(n, data):res = 0for i in range(n - 1):for j in range(i + 1, n):# print(data[i],data[j],data[i] ^ data[j])res += (data[i] ^ data[j]) * (j - i)print(res)def solve2(n, data):res = 0for j_i in range(1, n):cnt = 0for i in range(j_i):for j in range(i + j_i, n, j_i):cnt += data[j - j_i] ^ data[j]res += j_i * cntprint(res)T = 1
for i in range(T):n = II()# data = LMII()import randomdata = [random.randint(1, 2 ** 20) for _ in range(n)]import timet1 = time.time()solve1(n, data)t2 = time.time()solve2(n, data)t3 = time.time()print(t2 - t1, t3 - t2)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76601.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76601.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76601.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++基礎精講-05

文章目錄 1.構造函數初始化列表1.1 初始化列表的使用1.2 有參構造函數的默認值 2.對象所占空間大小2.1 大小的計算2.2 內存對齊機制 3. 析構函數3.1 基本概念3.2 總結 4.valgrind工具集4.1 介紹4.2 memcheck的使用 5. 拷貝構造函數5.1 拷貝構造函數定義5.2 淺拷貝/深拷貝5.3 拷…

文章記單詞 | 第28篇(六級)

一&#xff0c;單詞釋義 shirt /???t/ n. 襯衫&#xff1b;襯衣commonly /?k?m?nli/ adv. 通常地&#xff1b;一般地&#xff1b;普遍地pick /p?k/ v. 挑選&#xff1b;采摘&#xff1b;撿起&#xff1b;選擇&#xff1b;n. 選擇&#xff1b;鶴嘴鋤&#xff1b;精華com…

安裝低版本Pytorch GPU

網上很多教程都是自動安裝&#xff0c;不指定版本&#xff0c;其實有大問題。而且torch、torchvision、torchaudio的版本必須是對應&#xff0c;所以一旦版本不對&#xff0c;就可能會出現各種問題。 其實Pytorch官網就已經給出了安裝低版本的教程 登入Pytorch官網 點擊previo…

2025認證杯挑戰賽B題【 謠言在社交網絡上的傳播 】原創論文講解(含完整python代碼)

大家好呀&#xff0c;從發布賽題一直到現在&#xff0c;總算完成了認證杯數學中國數學建模網絡挑戰賽第一階段B題目謠言在社交網絡上的傳播完整的成品論文。 本論文可以保證原創&#xff0c;保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃圾半…

并發編程--互斥鎖與讀寫鎖

并發編程–互斥鎖與讀寫鎖 文章目錄 并發編程--互斥鎖與讀寫鎖1. 基本概念2. 互斥鎖2.1 基本邏輯2.2 函數接口2.3示例代碼12.4示例代碼2 3. 讀寫鎖3.1 基本邏輯3.2示例代碼 1. 基本概念 互斥與同步是最基本的邏輯概念&#xff1a; 互斥指的是控制兩個進度使之互相排斥&#x…

親手打造可視化故事線管理工具:開發全流程、難點突破與開發過程經驗總結

親手打造可視化故事線管理工具&#xff1a;開發全流程、難點突破與開發過程經驗總結 作為還沒入門的業余編程愛好者&#xff0c;奮戰了2天&#xff0c;借助AI開發一款FLASK小工具&#xff0c;功能還在完善中&#xff08;時間軸可以跟隨關聯圖縮放&#xff0c;加了一個用C鍵控制…

網絡攻防技術-虛擬機安裝和nmap端口掃描

文章是博主上實驗課做的實驗和心得體會&#xff0c;有些高深的地方我可能也比較一知半解&#xff0c;歡迎來交流。全文參考課程所習得&#xff0c;純粹梳理知識點和分享&#xff0c;如有不妥請聯系修改。 文章側重實驗部分&#xff0c;也會講述實驗相關的理論知識。理論后期如果…

中斷的硬件框架

今天呢&#xff0c;我們來講講中斷的硬件框架&#xff0c;這里會去舉3個開發板&#xff0c;去了解中斷的硬件框架&#xff1a; 中斷路徑上的3個部件&#xff1a; 中斷源 中斷源多種多樣&#xff0c;比如GPIO、定時器、UART、DMA等等。 它們都有自己的寄存器&#xff0c;可以…

動手學深度學習:手語視頻在VGG模型中的測試

前言 其他所有部分同上一篇AlexNet一樣&#xff0c;所以就不再贅訴&#xff0c;直接看VGG搭建部分。 模型 VGG是第一個采取塊進行模塊化搭建的模型。 def vgg_block(num_convs,in_channels,out_channels):layers[]for _ in range(num_convs):layers.append(nn.Conv2d(in_ch…

信息學奧賽一本通 1498:Roadblocks | 洛谷 P2865 [USACO06NOV] Roadblocks G

【題目鏈接】 ybt 1498&#xff1a;Roadblocks 洛谷 P2865 [USACO06NOV] Roadblocks G 【題目考點】 1. 圖論&#xff1a;嚴格次短路徑 嚴格次短路的路徑長度必須大于最短路的路徑長度。 非嚴格次短路的路徑長度大于等于最短路的路徑長度。 【解題思路】 每個交叉路口是一…

Arm CPU安全通告:基于TrustZone的Cortex-M系統面臨多重故障注入攻擊

安全之安全(security)博客目錄導讀 目錄 一、概述 二、致謝 三、參考文獻??????Black Hat USA 2022 | Briefings Schedule 四、版本歷史 一、概述 Arm注意到BlackHat 2022大會官網發布的演講摘要《糟糕..&#xff01;我又一次故障注入成功了&#xff01;——如何突…

【頻域分析】包絡分析

【頻域分析】包絡分析 算法配置頁面 可以一鍵導出結果數據 報表自定義繪制 獲取和下載【PHM學習軟件PHM源碼】的方式 獲取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

ElMessage

以下是關于 ElMessage 的詳細說明和使用方法&#xff1a; 什么是 ElMessage ElMessage 是 Element Plus 提供的一個全局消息提示組件&#xff0c;用于在頁面上顯示短暫的消息提示。它可以用于顯示成功、警告、錯誤等不同類型的消息。 基本用法 1. 引入 ElMessage 在使用 E…

全面解析 KaiwuDB 數據庫的數據類型

在現代數據庫管理系統中&#xff0c;數據類型的選擇至關重要。它不僅決定了數據存儲的效率&#xff0c;還影響到查詢的速度和數據的一致性。KaiwuDB&#xff0c;作為一款開源的分布式數據庫&#xff0c;提供了多種數據類型&#xff0c;以適應不同的業務需求和存儲要求。本文將全…

【計網】網絡交換技術之分組交換(復習自用,重要1)

復習自用的&#xff0c;處理得比較草率&#xff0c;復習的同學或者想看基礎的同學可以看看&#xff0c;大佬的話可以不用浪費時間在我的水文上了 另外兩種交換技術可以直接點擊鏈接訪問相關筆記&#xff1a; 電路交換 報文交換 一、分組交換的定義 1.定義 分組交換&#x…

C++ STL及Python中等效實現

一. STL 概述 STL 包含以下核心組件&#xff1a; 容器&#xff08;Containers&#xff09;&#xff1a;存儲數據的結構&#xff0c;如數組、鏈表、集合等。迭代器&#xff08;Iterators&#xff09;&#xff1a;用于遍歷容器的接口&#xff0c;類似指針。算法&#xff08;Alg…

python-63-前后端分離之圖書管理系統的Flask后端

文章目錄 1 flask后端1.1 數據庫實例extension.py1.2 數據模型models.py1.3 .flaskenv1.4 app.py1.5 運行1.6 測試鏈接2 關鍵函數和文件2.1 請求視圖類MethodView2.2 .flaskenv文件3 參考附錄基于flask形成了圖書管理系統的后端,同時對其中使用到的關鍵文件.flaskenv和函數類M…

藍橋杯真題——好數、R格式

目錄 藍橋杯2024年第十五屆省賽真題-好數 【模擬題】 題目描述 輸入格式 輸出格式 樣例輸入 樣例輸出 提示 代碼1&#xff1a;有兩個案例過不了&#xff0c;超時 藍橋杯2024年第十五屆省賽真題-R 格式 【vector容器的使用】 題目描述 輸入格式 輸出格式 樣例輸入…

Python中NumPy的索引和切片

在數據科學和科學計算領域&#xff0c;NumPy是一個功能強大且廣泛使用的Python庫。它提供了高效的多維數組對象以及豐富的數組操作函數&#xff0c;其中索引和切片是NumPy的核心功能之一。通過靈活運用索引和切片操作&#xff0c;我們可以輕松訪問和操作數組中的元素&#xff0…

設計模式:策略模式 - 消除復雜條件判斷的利器

一、什么是策略模式&#xff1f; 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它將一組算法或業務邏輯封裝為獨立的策略類&#xff0c;使這些策略可以互換使用&#xff0c;并通過上下文類動態選擇合適的策略。 核心思想 ? 將不同的行…