2021蓝桥杯
文章平均质量分 66
刷就完了
ooold_six
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021十二届蓝桥杯Java B国赛(原题+部分题解)
前前后后准备了快两个月,还算有所收获,国奖应该能拿个,不过感觉国赛的题比省赛简单的多就很迷 A 整数范围 签到,刚开始还以为有什么坑斟酌了半天 public static void main(String[] args) { String s ="11111111"; int x = Integer.parseInt(s,2); System.out.println(x); } 255 B 纯质数 常规题,欧拉筛出质数再遍历一遍判断即可,反正是填空怎么筛都行 package att原创 2021-06-05 14:32:16 · 3295 阅读 · 5 评论 -
蓝桥杯--常用函数杂记
四舍五入 Math.round(x) 返回int型 原理是在原数上加0.5后进行下取整,因此对负数进行计算可能会有误差 (下取整 Math.floor) 函数只能取到int型,需要保留小数时可以先倍乘后再除去 public static void main(String[] args) { double x = -11.5; System.out.println(Math.round(x)); double y = 5.123; System.out.println(Math.round(y原创 2021-05-31 22:11:46 · 326 阅读 · 0 评论 -
蓝桥杯--日期问题总结(判断闰年)(判断星期几)(判断日期合法性)
记录一下常见的日期问题模板 判断闰年 闰年规则 (1)能被4整除且不能被100整除 (2)能被400整除 static boolean check(int year) { if((year%4==0&&year%100!=0)||(year%400==0)) return true; return false; } 判断星期几 基姆拉尔森计算公式,通过年月日三个参数直接计算出星期 static int check(int y,int m,int d) { int w原创 2021-04-17 21:45:56 · 400 阅读 · 0 评论 -
蓝桥杯--并查集1 sdutoj 小雷的冰茶几
小雷的冰茶几 Description 小雷有个特殊的癖好,平时喜欢收藏各种稀奇古怪的东西,譬如。。。。,还有。。。。,也包括。。。。。小雷是一个喜欢分享的童鞋,这次小雷又给大家带来一套神奇的东西,那就是举世无双的冰茶几! 顾名思义,这些茶几被冰冻住了,最主要的是他们是易碎品,毕竟被冻住了。因此小雷要很小心翼翼的移动他们。一些茶几是冻在一起的,因此一套冰茶几分为好几部分,并且如果茶几A与B冻在一起,B与C冻在一起,那么A与C也就冻在了,即冰冻状态有传递性,ABC此时会看作一个整体。 为了保证冰茶几的完整性,原创 2021-04-11 19:06:47 · 228 阅读 · 0 评论 -
蓝桥杯--图论5 十一届javaB 七段码(dfs+位运算)
题意:在七个位置上每个位置有发光与否两种状态,只有发光的位置全部联通才属于一个合法情况,求一共有多少种情况合法 填空题,可以考虑并查集做法,做题的时候有些想不起来并查集就用了dfs+位运算来做,主要做完看了篇博文说是答案28给我看蒙了,改了半天后来看了别的博文才知道答案是80 当然没有官方答案,网上说是80的比较多吧,自己算完确实也是80 之前在递推部分做过飞行员、开关之类的题,和这题有些类似,因此考虑可以同样使用二进制来枚举状态,简化一下代码 首先因为共有七个位置,每个位置开关两种状态,那么可以使用二.原创 2021-04-11 16:18:54 · 455 阅读 · 1 评论 -
蓝桥杯--数论3 AcWing 1299. 五指山(扩展欧几里得)
AcWing 1299. 五指山 大圣在佛祖的手掌中。 我们假设佛祖的手掌是一个圆圈,圆圈的长为 n,逆时针记为:0,1,2,…,n−1,而大圣每次飞的距离为 d。 现在大圣所在的位置记为 x,而大圣想去的地方在 y。 要你告诉大圣至少要飞多少次才能到达目的地。 注意:孙悟空的筋斗云只沿着逆时针方向翻。 输入格式 有多组测试数据。 第一行是一个正整数 T,表示测试数据的组数; 每组测试数据包括一行,四个非负整数,分别为如来手掌圆圈的长度 n,筋斗所能飞的距离 d,大圣的初始位置 x 和大圣想去的地方 y。原创 2021-04-11 09:56:35 · 299 阅读 · 0 评论 -
蓝桥杯--数论2 AcWing 1296. 聪明的燕姿(因数和定理)
AcWing 1296. 聪明的燕姿 城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁。 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好! 燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S,那么自己等的人手上的号码牌数字的所有正约数之和必定等于 S。 所以燕姿总是拿着号码牌在地铁和人海找数字(喂!这样真的靠谱吗)。 可是她忙着唱《绿光》,想拜托你写一个程序能够快速地找到所有自己等的人。 输入格式 输入包含 k 组数据。 对于每组数据,输入包含一个号码牌 S原创 2021-04-10 16:23:32 · 447 阅读 · 0 评论 -
蓝桥杯--数论1 AcWing 1295. X的因子链 (算术基本定理,线性筛)
AcWing 1295. X的因子链 输入正整数 X,求 X 的大于 1 的因子组成的满足任意前一项都能整除后一项的严格递增序列的最大长度,以及满足最大长度的序列的个数。 输入格式 输入包含多组数据,每组数据占一行,包含一个正整数表示 X。 输出格式 对于每组数据,输出序列的最大长度以及满足最大长度的序列的个数。 每个结果占一行。 数据范围 1≤X≤220 输入样例: 2 3 4 10 100 输出样例: 1 1 1 1 2 1 2 2 4 6 题意:给出一个数n,求出在它除了1的因子中,能够倍乘的最长原创 2021-04-09 19:44:27 · 542 阅读 · 0 评论 -
蓝桥杯--贪心3 AcWing 1247. 后缀表达式
AcWing 1247. 后缀表达式 给定 N 个加号、M 个减号以及 N+M+1 个整数 A1,A2,⋅⋅⋅,AN+M+1,小明想知道在所有由这 N 个加号、M 个减号以及 N+M+1 个整数凑出的合法的后缀表达式中,结果最大的是哪一个? 请你输出这个最大的结果。 例如使用 123+−,则 “23+1−” 这个后缀表达式结果是 4,是最大的。 输入格式 第一行包含两个整数 N 和 M。 第二行包含 N+M+1 个整数 A1,A2,⋅⋅⋅,AN+M+1。 输出格式 输出一个整数,代表答案。 数据范围 0≤原创 2021-04-08 20:38:28 · 245 阅读 · 0 评论 -
蓝桥杯--贪心2 AcWing 112. 雷达设备
AcWing 112. 雷达设备 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超过 d 时,该小岛可以被雷达覆盖。 我们使用笛卡尔坐标系,定义海岸线为 x 轴,海的一侧在 x 轴上方,陆地一侧在 x 轴下方。 现在给出每个小岛的具体坐标以及雷达的检测范围,请你求出能够使所有小岛都被雷达覆盖所需的最小雷达数目。 输入格式 第一行输入两个整数 n 和 d,分别代表小岛数目和雷达检测原创 2021-04-08 19:41:44 · 246 阅读 · 0 评论 -
蓝桥杯--贪心1 AcWing 122. 糖果传递
AcWing 122. 糖果传递 有 n 个小朋友坐成一圈,每人有 a[i] 个糖果。 每人只能给左右两人传递糖果。 每人每次传递一个糖果代价为 1。 求使所有人获得均等糖果的最小代价。 输入格式 第一行输入一个正整数 n,表示小朋友的个数。 接下来 n 行,每行一个整数 a[i],表示第 i 个小朋友初始得到的糖果的颗数。 输出格式 输出一个整数,表示最小代价。 数据范围 1≤n≤1000000, 0≤a[i]≤2×109, 数据保证一定有解。 输入样例: 4 1 2 5 4 输出样例: 4 题意:n原创 2021-04-08 17:13:52 · 1034 阅读 · 0 评论 -
蓝桥别--图论4 AcWing 826. 单链表(数组模拟链表)
AcWing 826. 单链表 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k 个插入的数后面的数; 在第 k 个插入的数后插入一个数。 现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。 注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。 输入格式 第一行包含整数 M,表示操作次数。 接下来 M 行,原创 2021-04-04 17:42:51 · 186 阅读 · 0 评论 -
蓝桥杯--图论3 AcWing 1233. 全球变暖(DFS)
AcWing 1233. 全球变暖 你有一张某海域 N×N 像素的照片,”.”表示海洋、”#”表示陆地,如下所示: … .##… .##… …##. …####. …###. … 其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 2 座岛屿。 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。 具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。 例如上图中的海域未来会变成如下样子: … … … … …#… … … 请原创 2021-04-04 16:40:29 · 214 阅读 · 0 评论 -
蓝桥杯--图论2 AcWing 1224. 交换瓶子(环)
AcWing 1224. 交换瓶子 有 N 个瓶子,编号 1∼N,放在架子上。 比如有 5 个瓶子: 2 1 3 5 4 要求每次拿起 2 个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的情况,显然,至少需要交换 2 次就可以复位。 如果瓶子更多呢?你可以通过编程来解决。 输入格式 第一行包含一个整数 N,表示瓶子数量。 第二行包含 N 个整数,表示瓶子目前的排列状况。 输出格式 输出一个正整数,表示至少交换多少次,才能完成排序。 数据范围 1≤N≤10000原创 2021-04-04 16:10:17 · 299 阅读 · 0 评论 -
蓝桥杯--图论1 AcWing 1101. 献给阿尔吉侬的花束(BFS)
AcWing 1101. 献给阿尔吉侬的花束 阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。 今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。 现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。 迷宫用一个 R×C 的字符矩阵来表示。 字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。 阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个原创 2021-04-04 15:11:21 · 392 阅读 · 0 评论 -
蓝桥杯--双指针2 AcWing 1240. 完全二叉树的权值
AcWing 1240. 完全二叉树的权值 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1,A2,⋅⋅⋅AN 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大? 如果有多个深度的权值和同为最大,请你输出其中最小的深度。 注:根的深度是 1。 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,⋅⋅⋅AN。 输出格式 输出一个整数代表答案。 数据范围 1≤N≤105, −105≤Ai≤105 输入样例:原创 2021-04-04 14:34:49 · 179 阅读 · 0 评论 -
蓝桥杯--双指针1 AcWing 1238. 日志统计
AcWing 1238. 日志统计 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N 行。 其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。 具体来说,如果存在某个时刻 T 满足该帖在 [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K 个赞,该帖就曾是”热帖”。 给定日志,请你帮助小明统计出所原创 2021-04-04 13:23:16 · 418 阅读 · 0 评论 -
蓝桥杯--差分1 AcWing 797. 差分
AcWing 797. 差分 输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。 输出格式 共一行,包含 n 个整数,表示最终序列。 数据范围 1≤n,m≤100000, 1≤l≤r≤n, −1000≤c≤1000, −1000≤整数序列中原创 2021-04-03 19:28:33 · 341 阅读 · 0 评论 -
蓝桥杯--树状数组2 AcWing 1215. 小朋友排队
AcWing 1215. 小朋友排队 n 个小朋友站成一排。 现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。 开始的时候,所有小朋友的不高兴程度都是 0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1,如果第二次要求他交换,则他的不高兴程度增加 2(即不高兴程度为 3),依次类推。当要求某个小朋友第 k 次交换时,他的不高兴程度增加 k。 请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。 如果有两个小朋友身高一原创 2021-04-03 16:51:53 · 216 阅读 · 0 评论 -
蓝桥杯--线段树2 AcWing 1270. 数列区间最大值(缩短java输入输出时间)
AcWing 1270. 数列区间最大值 输入一串数字,给你 M 个询问,每次询问就给你两个数字 X,Y,要求你说出 X 到 Y 这段区间内的最大数。 输入格式 第一行两个整数 N,M 表示数字的个数和要询问的次数; 接下来一行为 N 个数; 接下来 M 行,每行都有两个整数 X,Y。 输出格式 输出共 M 行,每行输出一个数。 数据范围 1≤N≤105, 1≤M≤106, 1≤X≤Y≤N, 数列中的数字均不超过231−1 输入样例: 10 2 3 2 4 5 6 8 1 2 9 7 1 4 3 8 输出原创 2021-04-03 14:43:30 · 284 阅读 · 0 评论 -
蓝桥杯--线段树1 AcWing 1264. 动态求连续区间和
AcWing 1264. 动态求连续区间和 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。 第二行包含 n 个整数,表示完整数列。 接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。 数列从 1 开始计数。 输出格式 输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。 数据范围 1≤n≤1000原创 2021-04-03 13:11:24 · 273 阅读 · 0 评论 -
蓝桥杯--树状数组1 AcWing 1264. 动态求连续区间和
AcWing 1264. 动态求连续区间和 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。 第二行包含 n 个整数,表示完整数列。 接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。 数列从 1 开始计数。 输出格式 输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。 数据范围 1≤n≤1000原创 2021-04-01 20:45:02 · 330 阅读 · 0 评论 -
蓝桥杯--排序1 AcWing 788. 逆序对的数量
AcWing 788. 逆序对的数量 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式 输出一个整数,表示逆序对的个数。 数据范围 1≤n≤100000 输入样例: 6 2 3 4 5 6 1 输出样例: 5 题意:找出有多少个 i<j 且 a[i]原创 2021-03-30 21:58:37 · 264 阅读 · 0 评论 -
蓝桥杯--模拟1 AcWing 1241. 外卖店优先级
AcWing 1241. 外卖店优先级 “饱了么”外卖系统中维护着 N 家外卖店,编号 1∼N。 每家外卖店都有一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。 如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果优先级小于等于 3,则会被清除出优先缓存。 给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优先缓存中。 输入格式原创 2021-03-30 21:31:16 · 263 阅读 · 0 评论 -
蓝桥杯--枚举1 AcWing 1236. 递增三元组
AcWing 1236. 递增三元组 给定三个整数数组 A=[A1,A2,…AN], B=[B1,B2,…BN], C=[C1,C2,…CN], 请你统计有多少个三元组 (i,j,k) 满足: 1≤i,j,k≤N Ai<Bj<Ck 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,…AN。 第三行包含 N 个整数 B1,B2,…BN。 第四行包含 N 个整数 C1,C2,…CN。 输出格式 一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai,Bi,Ci≤105 输入原创 2021-03-29 22:01:20 · 363 阅读 · 0 评论 -
蓝桥杯--DP3 AcWing 1214. 波动数列
AcWing 1214. 波动数列 观察这个数列: 1 3 0 2 -1 1 -2 … 这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢? 输入格式 共一行,包含四个整数 n,s,a,b,含义如前面所述。 输出格式 共一行,包含一个整数,表示满足条件的方案数。 由于这个数很大,请输出方案数除以 100000007 的余数。 数据范围 1≤n≤1000, −109≤s≤原创 2021-03-27 17:49:46 · 360 阅读 · 0 评论 -
蓝桥杯--DP2 AcWing 1212. 地宫取宝
AcWing 1212. 地宫取宝 X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。 输入格式 第一行 3原创 2021-03-27 16:08:20 · 308 阅读 · 0 评论 -
蓝桥杯--DP1 AcWing 2. 01背包问题
DP问题简单是真简单,难是真的难,刚学算法被dp折磨的一天做一道题都费劲,主要还是要学会分析题意,找出状态转移公式,不过y总的分析法一直也没怎么看懂,大部分时候还是看灵性 背包问题属于经典DP问题了,01背包算式背包中最简单的一种,一般会和其他知识点结合出现,贴到模板题 AcWing 2. 01背包问题 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输原创 2021-03-27 14:04:39 · 204 阅读 · 0 评论 -
蓝桥杯--数学2 AcWing 1211. 蚂蚁感冒
AcWing 1211. 蚂蚁感冒 长 100 厘米的细长直杆子上有 n 只蚂蚁。 它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有 1 只蚂蚁感冒了。 并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 输入格式 第一行输入一个整数 n, 表示蚂蚁的总数。 接着的一行是 n 个用空格分开的整数 Xi, Xi 的绝对值表示蚂蚁离开杆子左边端点的距原创 2021-03-26 20:58:40 · 264 阅读 · 0 评论 -
蓝桥杯--数学1 AcWing买不到的题目
AcWing 1205. 买不到的数目 小明开了一家糖果店。 他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入格式 两个正整数 n,m,表示每种包装中糖的颗数。 输出格式 一个正整数,表示最大不能买到的原创 2021-03-26 20:10:47 · 332 阅读 · 0 评论 -
蓝桥杯--前缀和1
直接贴道模板题 AcWing 795. 前缀和 原题链接 题意:求出序列第l位至第r位的和 前缀和也是一种避免遍历造成时间浪费的方法,可以用O(1)的时间求出一个区间和,在构造序列时可以顺便构造前缀和序列,后续直接使用,实现意义即是前缀和序列的第 i 位的值等于原序列前 i 位的和,特殊题型中可能会有变化,不过大体思路不变 import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter;原创 2021-03-25 21:07:36 · 415 阅读 · 0 评论 -
蓝桥杯--二分2
AcWing 1221. 四平方和 原题链接 题意:拉格朗日定理,每个正整数都可以表示为至多 4 个正整数(包括零)的平方和。求出这四个数 这题归在二分里,但是二分的做法没太看懂。。也可以用哈希表来做,为了简化算法可以将算式转化为c2+d2=n−a2−b2 ,将四重循环简化成两个两重,通过哈希表来存储值,如果c2+d2在哈希表key中存在,则算式成立。 import java.io.*; import java.util.*; public class Main { static Scanner ta原创 2021-03-25 19:28:23 · 237 阅读 · 0 评论 -
蓝桥杯--二分1
二分题大多比较好理解,主要是为了减少使用遍历导致的大量时间,不过一般建立在有序的情况下。需要注意的点主要是二分中临界边缘的处理,不要漏选或重选,找个合适的跳出条件就可 AcWing 789. 数的范围 原题链接 题意:给出升序序列,求出目标k的最左位置及最右位置,不存在则输出-1 二分模板题,二分函数细分的话有很多种写法,这里主要注意的是求中值mid的取左取右问题。常规情况下mid=(l+r)/2,如果l到r范围内元素为奇数个则无影响,如果为偶数个的话,这种算式会取到中间两个元素中靠左的一个,如果想要取右元原创 2021-03-24 22:10:51 · 204 阅读 · 0 评论 -
蓝桥杯--递归3
AcWing 116. 飞行员兄弟 原题链接 题意:4x4的+ -符号矩阵中,拨动一个位置将使当前位置为中心的十字直至矩阵边缘的范围,+ -符号调换。给出初始矩阵判断最小步数使矩阵全部为-符号。 还是一题看着感觉和递归关联不大的题,和费解的开关这道题有点类似,可以把这题的矩阵整体看做开关题的第一行,由于数据量不大,可以直接枚举十六个符号的全部情况,同样是使用位运算来简化,将十六位二进制数模拟成4x4矩阵,使用移位和按位与运算来判断需要调动的位置,按题意操作矩阵,最后check即可。由于此题需要保存步骤,可以原创 2021-03-23 22:00:04 · 186 阅读 · 0 评论 -
蓝桥杯--递归2
AcWing 93. 递归实现组合型枚举 原题链接 输入n,m,且m<n,输出1~n的m位升序全排列。 自己的思路是传两参dfs,分别是数值s和数位t,根据特性从1~m来分别dfs,dfs中首先翻s的牌子,再从s+1开始继续遍历dfs,直至数位t==m时输出。不过一直觉得dfs传两参还要加个for循环确实是太捞了 package atta; import java.io.*; import java.util.*; public class Main { static Scanner tab原创 2021-03-15 21:39:12 · 143 阅读 · 0 评论 -
蓝桥杯--递归1(位运算)
备战蓝桥杯 谨以此记录历程 AcWing 92. 递归实现指数型枚举 原题链接 输出n个数字的各种组合,乱序即可 思路有多种,自认为最简单思路从1进行dfs,仅传参一个元素就可,枚举至n,分别考虑当前元素是否输出两种情况,输出则存入容器,进行下一元素的判断,直至最后一个元素遍历容器输出。第一种情况dfs结束后容器回溯,再进行不输出当前情况dfs。 考虑到容器需要进行回溯且不需排序,可以使用vector容器,由于vector容器底层仍使用数组,回溯时可以利用size来删除末尾元素达到回溯效果。也可以直接使原创 2021-03-14 17:11:37 · 251 阅读 · 1 评论
分享