博主头像
HailinCode

Full-Stack Developer

标签 蓝桥杯 下的文章

算法

取球博弈

题目描述两个人玩取球游戏。一共有 N 个球,每人轮流取球,每次可取集合 {n1, n2, n3} 中的任意数目。如果无法继续取球,则游戏结束。此时,持有奇数个球的一方获胜。如果两人都是奇数,则为平局。双方都采用最优策略,判断先手是否能赢。解题思路博弈 + 记忆化搜索,状态定义很关键。游戏涉及三个维度:剩余球数 num当前玩家持有的球数奇偶性 x1对方持有的球数奇偶性 x2轮到谁 i(先手/后手)用

算法

蓝桥杯 蓝桥国王

题目描述蓝桥王国中有 N 个城市,编号从 1 到 N,王国首都是 1 号城市。国王需要知道从首都到每个城市的最短距离。给定 M 条有向道路,每条道路连接两个城市 u 和 v,长度为 w。如果某个城市从首都不可达,则输出 -1。解题方法:Dijkstra 堆优化标准的单源最短路问题,所有边权非负,直接使用 Dijkstra 堆优化求解。从起点(首都)出发,用优先队列不断松弛邻边,最终得到所有节点的最

算法

最优分组

问题描述小蓝开了一家宠物店,最近有一种 X 病毒在动物之间进行传染,小蓝为了以防万一打算购买测试剂对自己的宠物进行病毒感染测试。为了减少使用的测试剂数目,小蓝想到了一个好方法:将 N 个宠物平均分为若干组,使得每组恰好有 K 只宠物,这样对同一组的宠物进行采样并混合后用一个试剂进行检测,如果测试结果为阴性则说明组内宠物都未感染 X 病毒;如果是阳性的话则需要对组内所有 K 只宠物单独检测,需要再消

算法

分巧克力

蓝桥杯2017-省AB-分巧克力N, K = map(int, input().split()) c = [] for _ in range(N): H, W = map(int, input().split()) c.append((H, W)) def can_cut(mid): # 检查边长为 mid 时,能不能切出至少 K 块 total = 0

算法

回文字符串

蓝桥杯2024省赛-回文字符串题目描述给定一个只包含小写字母的字符串 S,可以在字符串的开头加入任意数目的指定字符 l、q、b。问是否能通过这种方式将 S 转化为一个回文字符串。输入格式第一行一个整数 T,表示数据组数。 接下来 T 行,每行一个字符串 S。输出格式输出 T 行,每行 Yes 或 No。样例输入:3 gmgqlq pdlbll aaa输出:Yes No Yes解题思路核心思想由于