# 第十六届蓝桥杯大赛软件赛省赛 ## Python大学B组 --- ## 试题A: 攻击次数 **本题总分:5分** ### 【问题描述】 小蓝正在玩一个游戏,游戏中有三个英雄攻击一个怪物。 怪物的初始血量为2025。 三个英雄的攻击方式如下: - 第一个英雄:每回合攻击5点伤害 - 第二个英雄:奇数回合攻击15点伤害,偶数回合攻击2点伤害 - 第三个英雄:第1回合攻击2点,第2回合攻击10点,第3回合攻击7点,然后循环 请问第几回合可以击败怪物(怪物血量≤0)? ### 【答案提交】 这是一道结果填空题,只需要算出结果后提交即可。 **注意:** 题目有歧义,可能是103或181,取决于是否每回合只能操作一个英雄还是所有英雄都可使用。 --- ## 试题B: 最长字符串 **本题总分:5分** ### 【问题描述】 给定一个单词列表(从文件words.txt读取),找出满足以下条件的最长单词: 1. 该单词的所有前缀(除了自身)都必须在单词列表中 2. 如果有多个最长单词,输出字典序最小的 ### 【输入格式】 从文件words.txt读取,每行一个单词。 ### 【输出格式】 输出一个字符串,表示满足条件的最长单词。 --- ## 试题C: 2025图形 **时间限制:10.0s** **内存限制:512.0MB** **本题总分:10分** ### 【问题描述】 小蓝要画一个2025图形。图形的形状为一个h×w的矩形。 图形的规律是:第一行用"2025"重复填入,第二行开始,每行向左移动一个字符,用"2025"重复填入。 例如,当h=5, w=10时,图形如下: ``` 2025202520 0252025202 2520252025 5202520252 2025202520 ``` 给定h, w,请输出对应的图形。 ### 【输入格式】 输入一行包含两个正整数h, w,用一个空格分隔。 ### 【输出格式】 输出h行,每行w个字符。 ### 【样例输入】 ``` 4 5 ``` ### 【样例输出】 ``` 20252 02520 25202 52025 ``` --- ## 试题D: 最多次数 **时间限制:10.0s** **内存限制:512.0MB** **本题总分:10分** ### 【问题描述】 给定一个字符串s,只包含小写字母'l'、'q'、'b'。 定义一个"lqb子串"为:由'l'、'q'、'b'三个字母各出现一次组成的连续子串(顺序任意)。 两个"lqb子串"不能重叠(即不能共享同一个位置的字符)。 请问最多能找出多少个不重叠的"lqb子串"? ### 【输入格式】 输入一行包含一个字符串s。 ### 【输出格式】 输出一个整数,表示最多能找出的"lqb子串"数量。 ### 【样例】 输入:`lqbblqblqlxqb` 输出:`3` --- ## 试题E: A*B Problem **时间限制:10.0s** **内存限制:512.0MB** **本题总分:15分** ### 【问题描述】 给定一个正整数L,求满足以下条件的四元组(x1, y1, x2, y2)的数量: - x1 * x2 + y1 * y2 ≤ L - x1, y1, x2, y2 都是正整数 ### 【输入格式】 输入一行包含一个正整数L。 ### 【输出格式】 输出一个整数,表示满足条件的四元组数量。 ### 【评测用例规模与约定】 对于所有评测用例,1 ≤ L ≤ 10^6。 --- ## 试题F: 园艺 **时间限制:10.0s** **内存限制:512.0MB** **本题总分:15分** ### 【问题描述】 小蓝有n盆花,第i盆花的高度为a_i。 小蓝想选择一些花,使得它们可以排成一个"美观的序列"。一个序列是"美观的",当且仅当: 1. 序列中的花按高度严格递增 2. 相邻两盆花之间的间隔(下标差)都相同 请问最长可以选出多少个花组成"美观的序列"? ### 【输入格式】 输入的第一行包含一个正整数n。 第二行包含n个整数a_1, a_2, ..., a_n,表示每盆花的高度。 ### 【输出格式】 输出一个整数,表示最长"美观序列"的长度。 --- ## 试题G: 书架还原 **时间限制:10.0s** **内存限制:512.0MB** **本题总分:20分** ### 【问题描述】 小蓝有n本书,编号为1到n,原本按顺序放在书架上(第i个位置放第i本书)。 现在书被弄乱了,第i个位置上放着编号为a_i的书。 小蓝每次操作可以交换任意两本书的位置。 请问最少需要多少次操作才能将书还原(第i个位置放第i本书)? ### 【输入格式】 输入的第一行包含一个正整数n。 第二行包含n个整数a_1, a_2, ..., a_n,表示当前每个位置上的书的编号。 ### 【输出格式】 输出一个整数,表示最少操作次数。 ### 【样例输入】 ``` 3 3 1 2 ``` ### 【样例输出】 ``` 2 ``` ### 【样例说明】 当前:位置1放书3,位置2放书1,位置3放书2 目标:位置i放书i 这是一个长度为3的环:1→3→2→1,需要2次交换。 --- ## 试题H: 异或和 **时间限制:10.0s** **内存限制:512.0MB** **本题总分:25分** ### 【问题描述】 给定一个数组a,包含n个非负整数。 定义f(i, j) = a_i XOR a_{i+1} XOR ... XOR a_j(即从i到j的异或和)。 求所有1 ≤ i ≤ j ≤ n的f(i, j)之和。 ### 【输入格式】 输入的第一行包含一个正整数n。 第二行包含n个整数a_1, a_2, ..., a_n。 ### 【输出格式】 输出一个整数,表示所有子数组异或和的总和。 ### 【样例输入】 ``` 3 1 2 3 ``` ### 【样例输出】 ``` 10 ``` ### 【样例说明】 所有子数组: - [1]: 1 - [2]: 2 - [3]: 3 - [1,2]: 1^2=3 - [2,3]: 2^3=1 - [1,2,3]: 1^2^3=0 总和:1+2+3+3+1+0=10 ### 【评测用例规模与约定】 对于30%的评测用例,1 ≤ n ≤ 100; 对于60%的评测用例,1 ≤ n ≤ 1000; 对于所有评测用例,1 ≤ n ≤ 2×10^5,0 ≤ a_i ≤ 10^6。 --- **比赛时间:4小时** **祝你好运!**