百日算法竞赛
文章平均质量分 75
从1.4开始,博主会每天一道算法题打卡,由易到难,旨在通过百日训练达到竞赛水平。题目大多来自蓝桥杯《夺奖启航班》《程序设计竞赛专题挑战教程》《https://www.acwing.com》
幸福西西弗斯
莫忘少年凌云志,仍许天下第一流
展开
-
蓝桥杯夺奖班 | 五千字搞定模拟题(下)
每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如 “x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的 ISBN 码。地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。另外这题打表不要敲错字符哦~原创 2023-02-23 23:10:17 · 283 阅读 · 0 评论 -
蓝桥杯夺奖班 | 如何如何搞定模拟题(上)
我们可以枚举从 2000 年 1 月 1日到 2020 年 10 月 1 日的所有日期:用 y、m、d 分表表示当前枚举的年、月、日,那么当 d=1 为月初,否则不为月初。先循环,每一次循环输入一个数,紧接着判断数是否满足优秀或者几个的条件,由于要计算优秀率和及格率,我们需要在判断语句里面 有cnt++(用来记录一下及格和优秀的人数)。小蓝给学生们组织了一场考试,卷面总分为100 分,每个学生的得分都是一个0 到100 的整数。接下来n 行,每行包含一个0 至100 的整数,表示一个学生的得分。原创 2023-02-21 00:37:52 · 155 阅读 · 0 评论 -
算法竞赛 | 字符串转整数、整数转字符串 (第十届蓝桥杯省赛C++B组,第十届蓝桥杯省赛JAVAB组——特别数的和)
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 00),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 11 到 n 中,所有这样的数的和是多少?输入格式共一行,包含一个整数 n。输出格式共一行,包含一个整数,表示满足条件的数的和。数据范围1≤n≤1000040574上面这一段代码其实就是最常见的整数转字符串类型模板了下面我们看一下字符串转整型。原创 2023-01-30 00:13:16 · 209 阅读 · 1 评论 -
【算法竞赛 5】动态规划 ——— 闫氏DP分析法(从集合角度来分析DP问题——01背包)
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。集合 :所有只考虑前 i 个物品,且总体积不大于 j 的选法的集合。第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。有 N 件物品和一个容量是 V 的背包。每个物品只有两种状态,选或者不选,选法数量就是2的n次方种。一般是第一维是选取前 i 个物品,后面几维是限制条件。第 i 件物品的体积是 vi,价值是 wi。原创 2023-01-24 22:50:34 · 1126 阅读 · 0 评论 -
【蓝桥杯算法 1】AcWing166.飞行员兄弟
接下来 N 行描述切换顺序,每行输出两个整数,代表被切换状态的把手的行号和列号,数字之间用空格隔开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j]上把手的状态。:如果存在多种打开冰箱的方式,则按照优先级整体从上到下,同行从左到右打开。“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。但是,这也会使得第 i行和第 j列上的所有把手的状态也随着改变。第一行输出一个整数 N,表示所需的最小切换把手次数。请你求出打开冰箱所需的切换把手的次数最小值是多少。原创 2023-01-16 19:06:39 · 1217 阅读 · 0 评论 -
算法竞赛100天第2天——STL IN C++(算法竞赛必备知识总结汇总)
我们在打比赛的时候为了方便通常会使用模板库,C++有STL标准模板库,Java对应的则是集合框架,C++比赛经常用容器,那么什么是容器呢?容器是储存其他对象的对象。被储存的对象必须是同一类型。只要是学过编程的兄弟都知道,这个定义后半句好像数组,确实,但是不尽相同。分类:容器分为两个部分,一是序列容器(是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。原创 2023-01-08 21:16:40 · 436 阅读 · 0 评论 -
算法竞赛100天第四天 —— 设计哈希表(散列表)
又称哈希表,将一个比较大的值域映射到一个小的范围,比如0∼1000000000,映射到0∼100000范围内。原因是原来的值域是比较稀疏的,稠密的。类似于离散化,离散化保序,而哈希表不保序。离散化是一种极其特殊的HashHash方式。插入查找删除(算法竞赛一般不用)维护一个集合,支持如下几种操作:I x,插入一个数 x;Q x,询问数 x 是否在集合中出现过;现在要进行 N 次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数 N,表示操作数量。原创 2023-01-12 22:33:40 · 113 阅读 · 0 评论 -
算法竞赛百日——快速排序 - 分治
每一次找一个分界点x,小于它的数放到x左边,大于x的数放到x右边,完成之后可以得到两个有序数组,然后再递归,直至所有元素都完成排序。这里注意,i先走,如果遇到比x大的,停下来,然后j再往左走,遇到比x小的停下来,再交换i,j,之后i,j都中间移动继续上述操作。第二行包含 n n n 个整数(所有整数均在 1 ∼ 1 0 9 1∼10^9 1∼109 范围内),表示整个数列。交换之后:3,1,2,5,4,6,9,7,10,8 一趟排序结束。输出共一行,包含 n n n 个整数,表示排好序的数列。原创 2023-01-10 20:32:07 · 477 阅读 · 0 评论 -
算法竞赛100天第1天 —— 第十一届蓝桥杯省赛C/C++ B组 —— 跑步锻炼(不看会后悔的《日期年份问题三种解法 — C++和Java代码以及Excel解法》)
我们可以枚举从 2000 年 1 月 1 日到 2020 年 10 月 1 日的所有日期:用 y、m、d 分表表示当前枚举的年、月、日,那么当 d=1 为月初,否则不为月初。点击跑步数下第一格(2000/1/1对应行),选择公式,选择逻辑,再选择IF函数,再判断里输入D2=TRUE,第一个返回值输入2,第二个返回值输入1。在第一个判断里输入B2=1(判断是否为月初),在第二个判断里输入C2=1(判断是否为周一)。点击判断下第一格(2000/1/1对应行),选择公式,选择逻辑,再选择OR。原创 2023-01-04 13:12:55 · 235 阅读 · 0 评论