A.2023


暴力即可

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")# INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())a = 12345678
b = 98765432
cnt_all = 0
ans = 0for num in range(a, b + 1):cnt_all += 1tmp = [int(i) for i in str(num)]flag_2_0 = Falseflag_0 = Falseflag_2_1 = Falseflag_3 = Falsefor i in range(len(tmp)):if flag_2_0 == False and tmp[i] == 2:flag_2_0 = Trueif flag_2_0 == True and flag_0 == False and tmp[i] == 0:flag_0 = Trueif flag_2_0 == True and flag_0 == True and flag_2_1 == False and tmp[i] == 2:flag_2_1 = Trueif flag_2_0 == True and flag_0 == True and flag_2_1 == True and flag_3 == False and tmp[i] == 3:flag_3 = Trueans += 1break
print(cnt_all - ans)
# 85959030

B.硬币兑换


注意,只有新币可以兑换,最后结果不论硬币新旧。
故应当将1 + 2022, 2 + 2021, … ,1011 + 1012。

a = [i for i in range(2024)]
a = a + [0] * 2024
left = 1
right = 2022
while left < right:a[left + right] += a[left]a[right] -= a[left]a[left] = 0left += 1right -= 1print(max(a))
# 513589

C.松散子序列

import sysinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())s = input()
n = len(s)
f = [0] * n
if s == '':print(0)
elif n == 1:print(ord(s[0]) - ord('a') + 1)
else:f[0] = ord(s[0]) - ord('a') + 1f[1] = max(f[0], ord(s[1]) - ord('a') + 1)for i in range(2, n):f[i] = max(f[i - 1], f[i - 2] + ord(s[i]) - ord('a') + 1)print(max(f))

D.管道



直接遍历每一个阀门,定义数组 v i s i vis_i visi​ 为第 i i i 个阀门最早感应到水流的时间。

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")INF = int(1e12)# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())n, len = read()
a = []
for _ in range(n):l, s = read()a.append([l, s])vis = [INF] * (len + 1)for i in range(n):l, s = a[i]vis[l] = min(vis[l], s)for i in range(n):l, s = a[i]t = s + 1left = l - 1right = l + 1while left >= 1 and t < vis[left]:vis[left] = tt += 1left -= 1t = s + 1while right <= len and t < vis[right]:vis[right] = tt += 1right += 1print(max(vis[1::]))

E.保险箱



写的贪心,感觉不对。

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")# INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())n = I()
x = input()
y = input()
prev = 0
ans = 0
for i in range(n-1, -1, -1):tmp_x = int(x[i]) + prevtmp_y = int(y[i])if tmp_x > tmp_y:if (tmp_x - tmp_y) - (tmp_y + 10 - tmp_x) > 1:ans += (tmp_y + 10 - tmp_x)prev = 1else:ans += tmp_x - tmp_yprev = 0elif tmp_x == tmp_y:prev = 0else:if (tmp_y - tmp_x) - (tmp_x + 10 - tmp_y) > 1:ans += (tmp_x + 10 - tmp_y)prev = -1else:ans += tmp_y - tmp_xprev = 0print(ans)

F.树上选点


暴力枚举第一个点,再找第二个点。

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")# INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())def dfs_deep(u, depth):deep[u] = depthfor v in g[u]:dfs_deep(v, depth + 1)def dfs(u, fa, x):if fa == x:vis[u] = Truefor v in g[u]:if v == x:vis[u] = Truedfs(v, u, x)n = I()
g = [[] for _ in range(n + 1)]f = list(read())for i in range(n - 1):g[f[i]].append(i + 2)
value = list(read())
value = [0] + value
deep = [0] * (n + 1)
dfs_deep(1, 0)
ans = 0for x in range(1, n + 1):vis = [False] * (n + 1)vis[0] = Truefor i in range(1, n + 1):if deep[i] == deep[x]:vis[i] = Truedfs(1, 0, x)tmp = []maxm1 = 0for i in range(1, n + 1):if not vis[i] and i != x:if value[i] > maxm1:maxm1 = value[i]ans = max(ans, value[x] + maxm1)print(ans)

G.T字消除



没做。

H.独一无二



开个cnt数组,每次dis[u]+w == dis[v]的时候+1

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())class Edge:v = 0w = 0ne = -1def add(a, b, c):global idxe[idx].v = be[idx].w = ce[idx].ne = h[a]h[a] = idxidx += 1def dijkstra(s):vis = [False] * (n + 1)dis = [INF] * (n + 1)cnt = [0] * (n + 1)dis[0] = dis[s] = 0vis[0] = Trueq = []heapq.heappush(q, [0, s])while q:_, u = heapq.heappop(q)if vis[u]:continuevis[u] = Truei = h[u]while i != -1:v = e[i].vw = e[i].wi = e[i].neif dis[u] + w < dis[v]:dis[v] = dis[u] + wif not vis[v]:heapq.heappush(q, [dis[v], v])if dis[u] + w == dis[v]:cnt[v] += 1cnt[s] = 1for i in range(1, n + 1):print(cnt[i] - 1)n, m = read()
h = [-1] * (n + 1)
idx = 0
e = [Edge() for _ in range(m)]
for _ in range(m):u, v, c = read()add(u, v, c)
dijkstra(1)

I.异或和



a维护以x为根的子树异或和, prev维护每个结点的点权。
每次change只需要向上更改贡献即可。
正解应该是 dfs序+树状数组/线段树 维护

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")# INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())def dfs(u):for v in g[u]:a[u] ^= dfs(v)return a[u]def change(u, x, y):if u == x:a[x] = a[x] ^ prev[x] ^ y# 注意要把点权也修改了,比赛的时候忘记了。。。。prev[x] = yreturn prev[x] ^ yfor v in g[u]:a[u] ^= change(v, x, y)return 0n, m = read()
a = list(read())
a = [0] + a
prev = copy.deepcopy(a)
g = [[] for _ in range(n + 1)]
for i in range(n - 1):u, v = read()g[u].append(v)dfs(1)for _ in range(m):op = list(read())if op[0] == 1:x, y = op[1], op[2]change(1, x, y)if op[0] == 2:x = op[1]print(a[x])

J.混乱的数组


手算 x ≤ 10 x\le10 x≤10

import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import mathinput = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")# INF = 0x3f3f3f3f3f3f# sys.setrecursionlimit(100000)def read():line = sys.stdin.readline().strip()while not line:line = sys.stdin.readline().strip()return map(int, line.split())def I():return int(input())x = I()
if x == 1:print(2)print(2, 1)
if x == 2:print(3)print(2, 1, 1)
if x == 3:print(3)print(3, 2, 1)
if x == 4:print(4)print(2, 2, 1, 1)
if x == 5:print(4)print(3, 2, 1, 1)
if x == 6:print(4)print(4, 3, 2, 1)
if x == 7:print(5)print(3, 2, 2, 2, 1)
if x == 8:print(5)print(3, 3, 2, 1, 1)
if x == 9:print(5)print(4, 3, 2, 1, 1)
if x == 10:print(5)print(5, 4, 3, 2, 1)

注意

非官方题解,只是我自己的做法,如果有错误,或者有更好的做法都欢迎指正。

第十四届蓝桥杯大赛软件赛省赛pythonB(含代码)相关推荐

  1. 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

    第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组 注意!!!!!!!!!!这篇题解为赛时的个人做法,不代表是正确的,仅供参考. 更新:思路上应该都对,很多题都有细节错误,代码不用看了,太久没敲代 ...

  2. 第十四届蓝桥杯大赛软件赛省赛JavaB组解析

    目录 说在前面 试题 A: 阶乘求和 代码: 题目分析: 试题 B: 幸运数字 代码: 题目分析: 试题 D: 矩形总面积 代码: 题目分析: 试题 G: 买二赠一 代码: 题目分析: 试题 H: 合 ...

  3. 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题

    颜色平衡树 ==问题描述== ==格式输入== ==格式输出== ==样例输入== ==样例输出== ==评测用例规模与约定== ==解析== ==参考程序== 问题描述 格式输入 输入的第一行包含一 ...

  4. 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组题解+个人总结

    提示:此题解为本人自己解决,如有差错请大家多多指正. 文章目录 题解+总结 一.幸运数 1.试题 2.解法 3.代码 二.[有奖问答](https://blog.csdn.net/A210515333 ...

  5. 第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学C组)

    蓝桥杯 2023年省赛真题 C/C++ 大学C组 试题 A: 求和 试题 B: 工作时长 试题 C: 三国游 试题 D: 填充 试题 E: 翻转 试题 F: 子矩阵 试题 G: 互质数的个数 试题 H ...

  6. 第十四届蓝桥杯大赛软件赛省赛(Java 大学A组)

    蓝桥杯 2023年省赛真题 Java 大学A组  试题 A: 特殊日期  试题 B: 与或异或  试题 C: 平均  试题 D: 棋盘  试题 E: 互质数的个数  试题 F: 阶乘的和  试题 G: ...

  7. 第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学A组)

    蓝桥杯 2023年省赛真题 C/C++ 大学A组 试题 A: 幸运数 试题 B: 有奖问答 试题 C: 平方差 试题 D: 更小的数 试题 E: 颜色平衡树 试题 F: 买瓜 试题 G: 网络稳定性 ...

  8. 第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)

    目录 试题 A. 日期统计 1.题目描述 2.解题思路 3.模板代码 试题 B.01 串的熵 1.题目描述 2.解题思路 3.模板代码 试题 C. 冶炼金属 1.题目描述 2. 解题思路 3.模板代码 ...

  9. 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码

    欢迎访问个人网站来查看此文章:http://www.ghost-him.com/posts/db23c395/ 问题描述 对于一个长度为 n 的 01 串 S = x 1 x 2 x 3 . . . ...

  10. 第十四届蓝桥杯大赛软件赛省赛(Java 大学B组)

    目录 试题 A. 阶乘求和 1.题目描述 2.解题思路 3.模板代码 试题 B.幸运数字 1.题目描述 2.解题思路 3.模板代码 试题 C.数组分割 1.题目描述 2.解题思路 3.模板代码 试题 ...

最新文章

  1. CVPR 2021|SensatUrban:城市规模点云数据集
  2. 本地缓存需要高时效性怎么办_缓存在高并发场景下的常见问题
  3. Scala基础教程(五):函数、闭包
  4. 面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)...
  5. 爪哇国新游记之二十六----迷宫寻路
  6. 企业管理软件 Compiere ERPCRM
  7. 解决VS在高DPI下设计出的Winform程序界面变形问题
  8. No.1 - 制作一个简单的菜单动画效果---百度IFE
  9. 【电路设计】1N系列二极管型号总结
  10. CE的EMC测试(EN55022-EN55024-EN55014)-转载
  11. 个人用户上网需要有计算机电话线,个人用户上网需要有计算机、电话线、用户账号和口令,以及______。...
  12. matlab中在xls单元格中填充颜色,!Excel中如何根据某一列的值对整行进行颜色填充?...
  13. 经典动态规划:打家劫舍系列问题
  14. 计算机桌面调音量的图标不见了,电脑调节音量的小喇叭不见了?教你3招,轻松解决!...
  15. Android去除对话框边距,去除TextView默认内边距
  16. cs显示服务器连接失败是什么原因,CS1.5服务器连接常见问题解决 解决常见Windows 7无法识别网络的问题...
  17. Hexo | yilia主题美化
  18. 通信协议基础以及常用的串口通信协议
  19. 根据中文名字首字母进行分组
  20. esxi时间服务器在哪配置文件,如何使用vSphere Web Client配置 ESXi时间同步?

热门文章

  1. 章鱼网络首个应用链 Debio Network 主网正式启动
  2. 龙之谷显示黑龙攻击服务器,龙之谷黑龙巢穴多少w攻击可以打
  3. html高德地图api使用教程,快速上手-入门-教程-地图 JS API | 高德地图API
  4. 2022年华东师范大学计科考研复试机试题-详细题解
  5. “2018中国企业互联网CEO峰会”听e签宝金宏洲讲新趋势
  6. 清华大学计算机学院电话,清华大学
  7. Ajax使用,爬取微博正文,点赞,评论数。
  8. 台式计算机主板和cpu,电脑主板与CPU有什么区别吗?是一体的吗?
  9. 【实战】——以波士顿房价为例进行数据的相关分析和回归分析
  10. 离散扫频 、插值扫频、快速扫频