Martian148's blog Martian148's blog
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档

Martian148

一只热爱文科的理科生
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档
  • codeforses 题解

  • atcoder 题解

  • XCPC 题解

  • 校训练赛题解

  • 牛客题解

  • 蓝桥杯题解

    • 蓝桥杯2024年第十五届省赛 python B组 题解
      • C - 连连看
      • D - 回文数组
      • E - 蓝桥村的真相
      • G - 缴纳过路费
    • 蓝桥杯2023年第十四届省赛 python B组 题解
  • 典题选讲

  • 杂题

  • 算法题解
  • 蓝桥杯题解
martian148
2025-04-10
目录

蓝桥杯2024年第十五届省赛 python B组 题解

# C - 连连看

n, m = map(int, input().split())
a = []
for i in range(n):
    a += [list(map(int, input().split()))]

ans = 0

b = [{} for _ in range(n + m)]

for i in range(n):
    for j in range(m):
        if a[i][j] not in b[i + j]:
            b[i + j][a[i][j]] = 0
        b[i + j][a[i][j]] += 1

for k in range(n + m):
    for key, value in b[k].items():
        if value > 1:
            ans += value * (value - 1)
    
b = [{} for _ in range(n + m)]
for i in range(n):
    for j in range(m):
        if a[i][j] not in b[i - j]:
            b[i - j][a[i][j]] = 0
        b[i - j][a[i][j]] += 1

for k in range(n + m):
    for key, value in b[k].items():
        if value > 1:
            ans += value * (value - 1)
  
print (ans)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# D - 回文数组

from datetime import *

start = datetime(1970, 1, 1, 0, 0, 0)

T = int(input())
for _ in range(T):
    date, time, x = input().split()
    now_time = datetime.strptime(date + ' ' + time, "%Y-%m-%d %H:%M:%S")
    x =  timedelta(minutes=int(x))
    print(now_time - (now_time - start) % x)
1
2
3
4
5
6
7
8
9
10

# E - 蓝桥村的真相

T = int(input())
for _ in range(T):
    n = int(input())
    if n % 3 == 0:
        print(n * 2)
    else:
        print(n)
1
2
3
4
5
6
7

# G - 缴纳过路费

n, m, l, r = map(int, input().split())

a = [[] for _ in range(n + 1)]

edges = []

for i in range(m):
    u, v, w = map(int, input().split())
    if l <= w <= r:
        edges.append((v, u, w))

fa = [i for i in range(n + 1)]
siz = [1 for i in range(n + 1)]

def find(x):
    if fa[x] != x:
        fa[x] = find(fa[x])
    return fa[x]

def merge(x, y):
    x, y = find(x), find(y)
    if x == y:
        return
    fa[x] = y
    siz[y] += siz[x]
    siz[x] = 0

ans = 0

sorted_edges = sorted(edges, key=lambda x: x[2])
for u, v, w in sorted_edges:
    if find(u) == find(v):
        continue
    ans += siz[find(u)] * siz[find(v)]
    merge(u, v)

print(ans)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2024牛客暑期多校训练营9 题解
蓝桥杯2023年第十四届省赛 python B组 题解

← 2024牛客暑期多校训练营9 题解 蓝桥杯2023年第十四届省赛 python B组 题解→

最近更新
01
Java基础语法
05-26
02
开发环境配置
05-26
03
pink 老师 JavaScript 学习笔记
05-26
更多文章>
Theme by Vdoing | Copyright © 2024-2025 Martian148 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式