![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝桥杯
努力的敲码工
一个平平无奇的追梦者
展开
-
Python:每日一题之《重新排序》真题练习(差分数组)
每次查询区间 [Li,Ri],相当于区间 [Li,Ri] 中的每个数字查询次数 +1。因此对 A 数组从小到大排序,而 s 数组也从小到大排序,使得A中最小的对应 s 中最小的,�A 中最大的对应 s 中最大的,此时可以保证和最大。对于所有评测用例, 1 ≤ n,m ≤ 10^5,1 ≤ Ai ≤ 10^6,1 ≤ Li ≤ Ri ≤ 10^6。原来的和为 6+14=20, 重新排列为 (1,4,5,2,3) 后和为 10+14=24, 增 加了 4。输入第一行包含一个整数 n。原创 2023-04-01 21:46:05 · 427 阅读 · 1 评论 -
Python:每日一题之《消除游戏》真题练习
在一个字符串 S 中, 如果 Si=Si−1 且 Si!=Si+1, 则称 Si 和 Si+1 为边缘 字符。=Si−1 且 Si=Si+1, 则 Si−1 和 Si 也称为边缘字符。对于一个给定的串 S, 一次操作可以一次性删除该串中的所有边缘字符 (操作后可能产生新的边缘字符)。对于 25% 的评测用例, ∣S∣≤10^3, 其中 ∣S∣ 表示 S 的长度;对于所有评测用例, ∣S∣≤10^6,S 中仅含小写字母。对于 50% 的评测用例, ∣S∣≤10^4;原创 2023-03-29 19:34:09 · 517 阅读 · 1 评论 -
Python:《矩形拼接》真题练习
以下 T 行, 每行包含 6 个整数 a1,b1,a2,b2,a3,b3, 其中 a1,b1 是第一个矩 形的边长, a2,b2 是第二个矩形的边长, a3,b3 是第三个矩形的边长。对于 10% 的评测用例, 1 ≤ T ≤ 5,1 ≤ a1,b1,a2,b2,a3,b3 ≤ 10,a1 = a2 = a3∘。对于 30% 的评测用例, 1 ≤ T ≤ 5,1 ≤ a1,b1,a2,b2,a3,b3 ≤ 10。3、8 条边,除去上面的所有情况。原创 2023-03-28 22:09:43 · 657 阅读 · 0 评论 -
Python:《寻找整数》
有一个不超过 1017 的正整数 n,知道这个数除以 2 至 49 后的余数如下表所示,求这个正整数最小是多少。原创 2023-03-28 20:52:19 · 756 阅读 · 0 评论 -
Python:每日一题之《质因数个数》
质数:指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。对于 30% 的评测用例, 1 ≤ n ≤ 10000。对于 60% 的评测用例, 1 ≤ n ≤ 10^9。给定正整数 n, 请问有多少个质数是 n 的约数。对于所有评测用例, 1 ≤ n ≤ 10^16。输出一个整数, 表示 n 的质数约数个数。396 有 2,3,11 三个质数约数。约数:又称因数,没有余数,取余为0。输入的第一行包含一个整数 n。原创 2023-03-28 19:26:17 · 563 阅读 · 0 评论 -
Python:大乘积
小蓝有 30 个数,分别为:99, 22, 51, 63, 72, 61, 20, 88, 40, 21, 63, 30, 11, 18, 99, 12, 93, 16, 7, 53, 64, 9, 28, 84, 34, 96, 52, 82, 51, 77。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。小蓝可以在这些数中取出两个序号不同的数,共有 30×29/2=435 种取法。请问这 435 种取法中,有多少种取法取出的两个数的乘积大于等于 2022。原创 2023-03-15 09:25:27 · 200 阅读 · 0 评论 -
Python:每日一题之字母数
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。请找到一个大于 20222022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。请将这个数的十进制形式作为答案提交。原创 2023-03-15 09:13:09 · 89 阅读 · 0 评论 -
Python:每日一题之小猪存钱罐(并查集)
现在已知每个钥匙所在的存钱罐,Byteazar 想要买一辆小汽车,而且需要打开所有的存钱罐。第一行:包括一个整数 N(1 ≤ N ≤ 10^6),这是 Byteazar the Dragon 拥有的存钱罐的数量。接下来有 N 行:第 i+1 行包括一个整数 x,表示第 i 个存钱罐对应的钥匙放置在了第 x 个存钱罐中。读入存钱罐的数量以及相应的钥匙的位置,求出能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量并将其输出。输出一个整数,表示能打开所有存钱罐的情况下,需要破坏的存钱罐的最少数量。原创 2023-03-05 15:37:15 · 203 阅读 · 0 评论 -
Python:每日一题之七段码(并查集,dfs连通性判断)
例如 c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。上图给出了七段码数码管的一个图示,数码管中一共有 77 段可以发光的二 极管,分别标记为 a,b,c,d,e,f,g。在设计字符 的表达时,要求所有发光的二极管是连成一片的。例如:b,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。例如:a,b,c,d,e 发光,f,g 不发光可以用来表达一种字符。例如:b 发光,其他二极管不发光可以用来表达一种字符。原创 2023-03-04 17:40:46 · 147 阅读 · 0 评论 -
Python:每日一题之合根植物(并查集)
w 星球的一个种植园,被分成 m×n 个小格子(东西方向 m 行,南北方向 n 列)。第一行,两个整数 m,n,用空格分开,表示格子的行数、列数(1 ≤ m,n ≤ 1000)。接下来 k 行,每行两个整数 a,b,表示编号为 a 的小格子和编号为 b 的小格子合根了。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。接下来一行,一个整数 k (0 ≤ k ≤ 10^5 ),表示下面还有 k 行数据。格子的编号一行一行,从上到下,从左到右编号。原创 2023-03-01 20:22:29 · 195 阅读 · 0 评论 -
Python:蓝桥幼儿园(并查集)
小明想让所有学生都互相成为朋友,但是蓝桥幼儿园的学生实在太多了,他无法用肉眼判断某两个学生是否为朋友。于是他起来了作为编程大师的你,请你帮忙写程序判断某两个学生是否为朋友(默认自己和自己也是朋友)。第 1 行包含两个正整数 N,M,其中 N 表示蓝桥幼儿园的学生数量,学生的编号分别为 1∼N。蓝桥幼儿园的学生是如此的天真无邪,以至于对他们来说,朋友的朋友就是自己的朋友。对于每个 op=2 的输入,如果 x 和 y 是朋友,则输出一行。小明会用红绳连接两名学生,被连中的两个学生将成为朋友。原创 2023-02-28 22:40:27 · 207 阅读 · 0 评论 -
Python:每日一题之盛最多水的容器(双指针)
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。原创 2023-02-28 17:59:43 · 74 阅读 · 0 评论 -
Python:每日一题之纪念品分组
为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。第3 ~ n+2行每行包含一个正整数 pi (5≤pi≤w),表示所对应纪念品的价格。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。第 1 行包括一个整数 w (80≤w≤200),为每组纪念品价格之和的上限。第 2 行为一个整数 n (1≤n≤30000),表示购来的纪念品的总件数。原创 2023-02-21 20:25:47 · 204 阅读 · 0 评论 -
Python:每日一题之取球博弈
第一行 3 个正整数 n1,n2,n3 (0原创 2023-02-20 22:40:28 · 413 阅读 · 0 评论 -
Python:每日一题之机器人塔
输入一行两个整数 M,N(0原创 2023-02-19 19:48:44 · 110 阅读 · 0 评论 -
Python:每日一题之跳蚱蜢优化(双向广搜)
由于起点和终点的串不同,正向BFS和逆向BFS扩展的下一层数量也不同,也就是进入2个队列的串的数量不同,先处理较小的队列,可以加快搜索速度。原创 2023-02-18 13:57:17 · 117 阅读 · 0 评论 -
Python:跳蚱蜢(BFS判重)
请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是 1−8 换位,2−7换位,...),至少要经过多少次跳跃?如下图所示: 有 9 只盘子,排成 1 个圆圈。其中 8 只盘子内装着 8 只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1 ~ 8。每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。原创 2023-02-17 22:34:16 · 569 阅读 · 0 评论 -
Python:每日一题之剪邮票(BFS全排列)
思路:暴力求全排列+检查连通性。(1)用递归暴力列出所有可能的排列:从12个数中选5个数进行全排列。(2)判断这5个数是否连通。算法复杂度:12*11*10*9*8=121/7=95040可行!判断2个数是否连通小技巧:·在原图中向上为-4,向下为+4,向左为-1,向右为+1,但是遇到34578这种4+1=5,这种情况不符合,所以重构一下原图。·向上为-5,向下为+5,向左为-1,向右为+1。原创 2023-02-17 11:11:20 · 515 阅读 · 0 评论 -
Python:每日一题之全球变暖(BFS连通性判断)
连通性判断:图论的一个简单问题,给定一张图,图由点和连接点的边组成,要求找到图中互相连通的部分。BFS判断连通性的步骤:·从图上任意一个点u开始遍历,把它放进队列中。·弹出队首u,标记u已搜过,然后搜索u的邻居点,即与u连通的点,放到队列中。·继续弹出队首,标记搜过,然后搜索与它连通的邻居点,放进队列。继续以上步骤,直到队列为空,此时一个连通块已经找到。其他没有访问到的点,属于另外的连通块,按以上步骤再次处理这些点。最后所有点都搜到,所有连通块也都找到。连通性判断什么岛屿不会被完全淹没?原创 2023-02-16 20:00:40 · 359 阅读 · 0 评论 -
Python算法:BFS
BFS搜索的原理:“逐层扩散”。从起点出发,按层次从近到远,逐层先后搜索。编码:用队列实现。应用:BFS一般用于求最短路径问题,BFS的特点是逐层搜索,先搜到的层离起点更近。原创 2023-02-16 00:15:00 · 926 阅读 · 0 评论 -
Python:每日一题之迷宫(队列实现BFS)
题目求字典序最小的最短路径在每次扩散下一层(往BFS的队列中加入下一层的结点)时,按字典序“D原创 2023-02-15 14:10:44 · 600 阅读 · 0 评论 -
Python:每日一题之发现环(DFS)
不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了 BUG。小明的实验室有 N 台电脑,编号 1⋯N。原本这 N 台电脑之间有 N−1 条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。2、若一个父节点的子节点被发现已经标记,则该子节点一定在环上。按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。其中, 1≤N≤10^5,1≤a,b≤N。原创 2023-02-14 11:03:16 · 462 阅读 · 0 评论 -
Python:青蛙跳杯子(BFS)
输入为 2 行,2 个串,表示初始局面和目标局面。我们约定,输入的串的长度不超过 15。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。其中,W 字母表示白色青蛙,B 表示黑色青蛙,∗ 表示空杯子。X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。隔着 1 只其它的青蛙(随便什么颜色)跳到空杯子里。隔着 2 只其它的青蛙(随便什么颜色)跳到空杯子里。输出要求为一个整数,表示至少需要多少步的青蛙跳。原创 2023-02-13 19:41:17 · 545 阅读 · 0 评论 -
Python:分考场(DFS剪枝)
思路:从第1个考场开始,逐个加入考生。每新加进来一个人x,都与已经开设的考场里面的人进行对比,如果认识,就换个考场。直到找到一个考场,考场里面所有的人都不认识x,x就可以坐在这里。如果所有已经开设的考场都有熟人,就开一个新考场给x坐。剪枝:用剪枝来减少搜索。在搜索一种新的可能的考场安排时,如果需要的考场数量已经超过了原来某个可行的考场安排,就停止。原创 2023-02-13 13:38:48 · 519 阅读 · 2 评论 -
Python:每日一题之四阶幻方(DFS剪枝)
把 1 ~ 16 的数字填入 4×4 的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。如果固定左上角为 1,请计算一共有多少种方案。就可以算为两种不同的方案。四阶幻方可能有很多方案。原创 2023-02-13 11:26:41 · 631 阅读 · 0 评论 -
Python:路径之谜(DFS剪枝)
有时是可以的,比如上图中的例子。为了方便表示,我们约定每个小格子用一个数字代表,从西北角开始编号: 0,1,2,3 ⋯⋯。本题的要求就是已知箭靶数字,求骑士的行走路径(测试数据保证路径唯一)第一行一个整数 N (0≤N≤20),表示地面有 N×N 个方格。第二行 N 个整数,空格分开,表示北边的箭靶上的数字(自西向东)第三行 N 个整数,空格分开,表示西边的箭靶上的数字(自北向南)小张冒充 X 星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。输出一行若干个整数,表示骑士路径。原创 2023-02-12 20:18:15 · 1095 阅读 · 3 评论 -
Python:每日一题之剪格子(DFS剪枝)
本题的要求就是请你编程判定:对给定的 m×n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。程序先读入两个整数 m,n 用空格分割 (m,n原创 2023-02-12 13:03:10 · 472 阅读 · 0 评论 -
Python:每日一题之玩具蛇(DFS搜索)
小张有一条玩具蛇,一共有 16 节,上面标着数字 1 至 16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成 90 度角。请帮小张计算一下,总共有多少种不同的方案。如果两个方案中,存在玩具蛇的某一节放在了盒子的不同格子里,则认为是不同的方案。小张还有一个 4×4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母 A 到 P 共 16 个字母。小张可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将玩具蛇放进去。原创 2023-02-11 20:34:26 · 123 阅读 · 0 评论 -
Python:每日一题之全球变暖(DFS连通性判断)
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。照片保证第 1 行、第 1 列、第 N 行、第 N 列的像素都是海洋。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。第一行包含一个整数 N (1≤N≤1000)。以下 N 行 N 列代表一张海域照片。输出一个整数表示答案。原创 2023-02-10 14:08:37 · 823 阅读 · 0 评论 -
Python算法:DFS排列与组合算法(手写模板)
例:前三个数的全排列(从小到大)打印 n 个数中,任意 m 个数的排列 4个数中,任意3个数的排列自写组合算法: 1、例:打印二进制数,以打印000~111为例(若需要反过来打印,只需交换第8、10行) 2、例:打印组合,以3个数{ 1,2,3 }为例原创 2023-02-09 20:42:38 · 1122 阅读 · 3 评论 -
Python:迷宫
开始的时候,直升机把 1100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10×10 相互连通的小房间组成的。X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。房间的地板上写着一个很大的字母。请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?原创 2023-02-09 18:51:42 · 428 阅读 · 0 评论 -
Python:每日一题之寒假作业(dfs自写全排列)
现在小学的数学题目也不是那么好玩的。每个方块代表 1~13 中的某一个数字,但不能重复。(加法,乘法交换律后算不同的方案)你一共找到了多少种方案?原创 2023-02-09 18:04:28 · 152 阅读 · 0 评论 -
Python:每日一题之观光公交(前缀和)
公交车在第 1 分钟从 1 号景点出发,第 2 分钟到达 2 号景点,第 5 分钟从 2 号景点出发,第 7 分钟到达 3 号景点。从第 i 号景点开到第 i+1 号景点需要 Di 分钟。设共有 m 个游客,每位游客需要乘车 1 次从一个景点到达另一个景点,第 i 位游客在Ti 分钟来到景点 Ai,希望乘车前往景点 Bi(Ai≤Bi)。第 2 行是 n−1 个整数,每两个整数之间用一个空格隔开,第 i 个数表示从第 i 个景点开往第 i+1 个景点所需要的时间,即 Di。原创 2023-02-08 11:35:06 · 423 阅读 · 1 评论 -
Python:轨道炮
地图上一共有 N 个敌方单位,可以看作 2D 平面上的点。其中第 i 个单位在 0 时刻的位置是 (Xi,Yi),方向是 Di (上下左右之一, 用'U'/'D'/'L'/'R' 表示),速度是 Vi。小张可以选择在某个非负整数时刻释放轨道炮,轨道炮一次可以消灭在一条直线 (平行于坐标轴)上的所有敌方单位。其中,1 ≤ N ≤ 1000,−10^6 ≤ Xi,Yi≤ 10^6,0 ≤ Vi ≤ 10^6。以下 N 行每行包含 3 个整数 Xi,Yi,Vi,以及一个大写字符 Di。原创 2023-02-07 19:12:42 · 200 阅读 · 0 评论 -
Python:每日一题之防御力(贪心思想)
0 表示使用增加 A 值的道具,1 表示使用增加 B 值的道具。前 n1+n2 行按顺序输出道具的使用情况,若使用增加A 值的道具,输出 Ax,x 为道具在该类道具中的编号(从 1 开始)。我们认为直接影响防御的参数为"防御性能",记作 d ,而面板上有两个防御值 A 和 B ,与 d 成对数关系,A=2d,B=3d(注意任何时候上式都成立)。现在已知第 i 次使用的道具是增加 A 还是增加 B 的值,但具体使用那个道具是不确定的,请找到一个字典序最小的使用道具的方式,使得最终的防御性能最大。原创 2023-02-07 11:32:30 · 380 阅读 · 0 评论 -
Python:翻硬币(前缀和)
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。如果同时翻转左边的两个硬币,则变为:oooo***oooo。两行等长的字符串,分别表示初始状态和要达到的目标状态。我们约定:把翻动相邻的两个硬币叫做一步操作。比如,可能情形是:**oo***oooo;小张正在玩一个"翻硬币"的游戏。一个整数,表示最小操作步数。每行的长度原创 2023-02-06 20:19:02 · 966 阅读 · 0 评论 -
Python:旅行家的预算(贪心法)
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。第 i+1 行,两个数字,油站 i 离发点的距离 Di 和每升汽油价格 Pi。输出所需最小费用,计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出。油站 i 离出发点的距离 Di、每升汽油价格 Pi。发点每升汽油价格 P 和沿途油站数 N。第一行,D1,C,D2,P,N。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出。每升汽油能行驶的距离 D2。城市之间的距离 D1。原创 2023-02-06 18:08:22 · 260 阅读 · 0 评论 -
Python:每日一题之快乐司机(贪心法)
现在知道了汽车核载重量为 w,可供选择的物品的数量 n。每个物品的重量为 gi, 价值为 pi。(n原创 2023-02-06 16:30:18 · 113 阅读 · 0 评论 -
Python:每日一题之二分查找数组元素(二分法)
先给定某个数(在 data 数组中),请你求出它在数组中的位置。输入一个待查找的整数(该整数一定在数组data中)。输出该整数在数组中的指标。原创 2023-02-05 11:16:48 · 220 阅读 · 0 评论 -
Python:扫地机器人(二分法)
我们假设某个机器人需要清扫 a,b,c,d 四个格子,因为这个机器人清扫完还需要回到最初始的位置,所以无论这个机器人初始位置在什么地方,其清扫路径的本质都是重复两次 a 到 b,b 到 c,c 到 d 的过程,花费时间为 6,由此,我们假设某个机器人清扫的格子范围为 l, 那么这个机器人花费的时间为 (l−1)×2。输出最少花费的时间。由于每个机器人的工作时间可能不同,那么这些机器人各自的花费时间中的最大值(设为 t )的就是本题要求的答案,我们需要做的是使得 t 最小。原创 2023-02-04 23:21:53 · 1177 阅读 · 0 评论