- 博客(35)
- 收藏
- 关注
原创 全球变暖(蓝桥杯 2018 年第九届省赛)
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。其中 "上下左右" 四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。照片保证第 1 行、第 1 列、第 N 行、第 N 列的像素都是海洋。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。第一行包含一个整数 N。(1≤N≤1000)。以下 N 行 N 列代表一张海域照片。你有一张某海域 N×N 像素的照片,
2025-04-11 20:33:47
290
原创 三元组变化式
现有一个下标从 0 开始的非空整型数组 nums,它的大小不超过一百 ,请编写程序计算满足如下要求的三元组的数目:nums[a] + nums[b] == nums[c] 且 a<b<c。//满足关系::nums[a] + nums[b] == nums[c] 且 a<b<c。第二行有 numsSize 个整数,分别表示数组 nums 的所有元素,每个整数用一个空格隔开。一个数字,表示符合题目要求的三元组的数量。//正在处理第start下标。//数组所有元素 创建数组。//使用递归实现全排列。
2025-04-10 01:45:20
259
原创 P8667 [蓝桥杯 2018 省 B] 递增三元组(摘自洛谷)
给定三个整数数组 A=[A1,A2,⋯,AN],B=[B1,B2,⋯,BN],C=[C1,C2,⋯,CN]。
2025-04-10 01:01:26
721
原创 【无标题】
例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。//保存当前获得最大边长 不知道之后还能不能获得最大边长。//不断压缩区间使得边长趋近于我们要求的最大边长。//计算在一定边长之下能得到的巧克力数量。//从最小边长最大的巧克力开始搜索 贪心算法。//计算在一定边长之下能得到的巧克力数量。//继续寻找最大的边长。//N行 巧克力的长 H宽 W。//存储第i+1块巧克力的长 宽。
2025-04-08 15:18:18
221
原创 庞大的斐波那契
/ind_first_not_of 是 std::string 类的一个成员函数,其作用是在字符串里查找第一个不等于指定字符的位置。//移除从 first 到 last(不包括 last)之间的所有元素,并返回 last。//从右到左(从低位到高位)循环逐位相加 保留进位 存储到另外一个字符串中。正常的斐波那契序列的计算方法是将序列的前两个成员相加,前两个成员都是 1。// 确保 num1 和 num2 长度相同,较短的前面补零。//从右到左边逐位相加。//将剩余的进位补齐到结果中。
2025-04-06 13:11:19
238
原创 蓝桥杯B组2017年省赛填空题(C++)
假设每块原料的重量都十分精确地平均落在下方的两个金属块上, 最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。col++){//1到row列 列元素个数等于行下标。//C++ 标准库提供了 std::round 函数,函数会将浮点数四舍五入到最接近的整数。其中的数字代表金属块的重量(计量单位较大)。row++) //1到29行。//一边输入一边运算。电子秤的计量单位很小,所以显示的数字很大。请你推算出:读数最大的电子秤的示数为多少?//回指向容器中最大值的迭代器。//存储金属材料质量。
2025-04-06 10:59:05
545
原创 明码(2018年蓝桥杯省赛B)
这道题目是给你一段多个汉字组成的信息,每个汉字用32个字节表示,这里给出了字节作为有符号整数的值。你的任务是复原这些汉字的字形,从中看出题目的要求,并根据要求填写答案。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。//每次只处理一个汉字。第31字节, 第32字节。//将任意数字转换为二进制数字。
2025-04-05 03:22:44
391
原创 两日期之间的天数
日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。给定的日期是 1980 年到 2100 年之间的有效日期。请你编写一个程序来计算两个日期之间隔了多少天。计算从固定日期出发的时间1980 1 1。//计算到达固定日期的天数。
2025-04-05 02:28:07
375
原创 文件操作(c语言)
本关任务:给定程序的功能是:从键盘输入若干行文本(每行不超过 80 个字符),写到文件myfile4.txt中,用 -1(独立一行)作为字符串输入结束的标志。请再勿改动主函数 main 和其他函数中的任何内容,仅在程序的下划线处填入正确的内容并把下划线和数字删除,然后调试运行使程序得到正确的结果。//buffer要写入文件的内容,sizeof(char)文本数据单元的大小,length要写入数据项的数量,file文件指针。//读取模式,使用file文件指针。//读取文件内容,显示在屏幕上。
2025-04-04 20:38:33
442
原创 蓝桥杯 2023 省赛 B 组 E 题。
例如 12,23,35,56,61,11 是接龙数列;12,23,34,56 不是接龙数列,因为 56 的首位数字不等于 34 的末位数字。对于一个长度为 K 的整数数列:A1,A2,…,AK,我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字(2≤i≤K)。现在给定一个长度为 N 的数列 A1,A2,…//正在处于第index个数字 当前的接龙序列长度 当前接龙序列最后一位是last_digit。对于 100% 的数据,1≤N≤105,1≤Ai≤109。
2025-04-04 12:35:54
573
原创 蓝桥杯 2023 省赛 B 组 C 题(冶炼金属)
这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。当 V=20 时,有:⌊75/20⌋=3,⌊53/20⌋=2,⌊59/20⌋=2,可以看到符合所有冶炼记录。当 V=25 时,有:⌊75/25⌋=3,⌊53/25⌋=2,⌊59/25⌋=2,可以看到符合所有冶炼记录。对于 100% 的评测用例,1≤N≤104,1≤B≤A≤109。//在V_max右侧。//在V_max左侧 >=
2025-04-03 19:38:49
845
原创 试题 B: 01 串的熵(十四届蓝桥杯省赛B组)
比如,对于 S = 100 来说,信息熵 H(S) = −1/3 log₂(1/3) −2/3 log₂(2/3) −2/3 log₂(2/3) = 1.3083。对于一个长度为 23333333 的 01 串,如果其信息熵为 11625907.5798,且 0 出现次数比 1 少,那么这个 01 串中 0 出现了多少次?xₙ,香农信息熵的定义为 H(S) = −∑ⁿᵢ₌₁p(xᵢ) log₂(p(xᵢ)),其中 p(0), p(1) 表示在这个 01 串中 0 和 1 出现的占比。
2025-04-03 15:05:00
440
原创 试题 A: 日期统计(蓝桥杯省赛B组)
2. 这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且要求这个日期是 2023 年中的某一天的日期,例如 20230902,20231223。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。//cout<<"到这里"<<i++<<"次"<<endl;//index当前处理到原序列的第index位。//pos当前处理到子序列的第pos位。//处理之前相同的日期。
2025-04-03 01:45:04
364
原创 P1706 全排列问题(摘自洛谷)
按照字典序输出自然数 $1$ 到 $n$ 所有不重复的排列,即 $n$ 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。//i表示数字i有没有被选上 ,不重复,按照字典序号。由 $1 \sim n$ 组成的所有不重复的数字序列,每行一个序列。//使用栈数据结构模拟,递归算法实现。//index表示正在处理index位置。每个数字保留 $5$ 个场宽。
2025-04-02 00:45:11
214
原创 多重背包问题
接下来有 N 行,每行两个整数 vi wi,用空格隔开,分别表示第 i 件物品的体积和价值。//从大到小进行遍历 类似01背包,避免重复选,超过物品数量。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第 i 件物品的体积是 vi ,价值是 wi ,总共有 si件。第一行两个整数N,V,用空格隔开,分别表示物品数量和背包容积。//对第i件物品的数量进行选择。//价值 状态转移方程。//01背包是完全背包 多重背包的基础。//在不同背包容量之下的价值。//N件物品 容量为V。
2025-03-23 07:49:18
271
原创 完全背包问题下(分成 背包装满或者背包不能装满 两种情况)
现在有 n 种物品,每种物品有任意多个,第 i 种物品的体积为 vi,价值为 wi。当背包容量为6时候,将实际数据带入方程dp[6]=max(dp[6],dp[6-3]+1);输出有两行,第一行输出第一问的答案,第二行输出第二问的答案,如果无解请输出 0。由于6-3恰好还是3也就是物品体积,所以再次放进这件物品时候,又能够装满。将体积为3 价值为1物品放进背包,发生状态转移,只有两次。//除dp[0]=0外,其余dp数组中的元素都是负无穷。当背包容量为3时候,恰好背包被装满,价值为1。
2025-03-22 15:38:37
283
原创 完全背包问题(动态规划)
继续 体积为2 时候 max(c++特有函数)比较的是当前背包状态(容量为2)和之前的状态(容量为1,也就是放入物品容量后)(同时价值要增加)接下来有 N 行,每行两个整数 vi wi,用空格隔开,分别表示第 i 件物品的体积和价值。//dp[j]表示当前背包容量为j时,背包内物品价值总和。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。有 N 件物品和一个容量是 V 的背包。从体积为1开始,此时背包中物品价值为2(还没有到达最大容量)//第i件物品的体积是vi,价值是wi。
2025-03-22 14:16:05
323
原创 背包I(c入门)使用动态规划解决
/如果将第i件物品,放进去的话,就是dp[j-vi]+wi表示将第i件物品放进去后,此时发生状态转换,背包容量从j变为j-vi,同时价值也要相应增加(这也就是动态转移方程来源)为什么要使用dp[j-vi]是因为,要模拟将物品放进后,背包状态变化,同时dp[j-vi]加入之前就有数据,也说明dp[j]能放进去当前物品,之前的某些物品也能放进去。进一步思考,如果这个格子有数据,也就是不为0,那么 数据就该来自上一件物品(处理第1件物品)获得价值,到现在,就已经说明动态规划方程同时处理物品1和2。
2025-03-20 23:19:27
398
原创 471、判断是否为质数(c++基础题)
/质数定义:自然数中除了1和这个数字本身外,不能再被其他数整除的数字。//合数定义:自然数中除了1和这个数字本身外,还能被其他数字整除的数字。//研究质数 合数等数论问题时候,都在正整数范围内进行。//整除就是 被除数除以除数的商是整数,没有余数。输入一个数 N ,请你判断其是否为质数。若为质数,输出Yes,否则输出No。//记得考虑这个数字本身是不是质数。//1既不是质数,也不是合数。输出 Yes 或者 No。输入一个正整数 N。
2025-03-13 21:39:56
144
原创 铺地毯(c++)
第一行 3 表示总共有 3 张地毯,接下来每行中,四个整数表示编号地毯的信息,例如 1 0 分别表示铺设地毯的左下角的坐标,2 3 表示地毯在 x 轴和 y 轴方向的长度,最后 4 5 表示所求的地面的点的坐标。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。接下来的 n行中,第 i+1 行表示编号i的地毯的信息,包含四个整数a,b,g,k每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b) 以及地毯在 x 轴和 y 轴方向的长度。
2025-03-13 15:03:38
883
原创 过河卒(棋盘问题c++)
同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。输入 6 6 表示 B 点的坐标,3 3 表示马的坐标,输出 6 表示除去马的坐标以及所有跳跃一步可达的点,从 A 点出发到 B 点的所有的路径条数。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。棋盘用坐标表示,A 点(0,0) 、B 点(n,m),同样马的位置坐标是需要给出的。对于 100% 的数据,1≤n,m≤20,0≤马的坐标≤20。
2025-03-12 23:03:15
935
原创 获取最大金币数量(c++)
有一个 N x N 的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。// 状态转移方程:当前格子的最大金币数等于上方或左方格子的最大金币数加上当前格子的金币数。//此处的dp数组代表在从位置(0,0)到达位置(i,j)处时,这些路径中能得到的最大金币数量。//最终结果就在最右下方,由于从题目中也看得出来,我们从最左上角到达最右角出去。//在动态规划题目中,dp数组使用核心,由于他有特殊的含义,根据题目设定而变化。//换言之,要想得到靠近最左边与最上面的只能,沿着格子(数组)的边界遍历。
2025-03-11 23:40:05
354
原创 166、有效的排列(c++)
假设有从 1 到 n 的 n 个整数。// 预处理的候选列表,pos从1到15。i 能够被 perm[i] 整除。给你一个整数 n ,返回可以构造的有效排列的个数。//只将符合条件的数字加入,减少时间开支。//index表示已经选了index个数字。perm[i] 能够被 i 整除。// 预处理候选列表。//这段代码使用位运算技巧。//回溯算法也叫恢复现场。
2025-03-07 20:55:38
405
原创 寻找消失的数字(全排列问题的模板)c++
给你一个长度为 n 的数组,数字 0 到 n 有一个数字不在数组中,找出这个数字并输出这个数字。//使用回溯算法解决,回溯算法的运行方向递归的运行方向相反。第二行 n 个整数,分别用空格隔开,表示数组元素。//index表示已经选择了多少个数字。第一行一个整数 n,表示数组大小。//深度优先搜索中使用回溯算法。
2025-03-07 20:15:05
183
原创 选数(c++)
已知 n 个整数 x1,x2,⋯,xn,以及 1 个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。第二行 n 个整数,分别为 x1 ,x2 ,⋯,xn(1≤x i ≤5×pow(10, 6) )。第一行两个空格隔开的整数 n,k(1≤n≤20,k<n)。//index正在选择第index个数字位置。//sum计算所选数字的和。NOIP 2002 普及组第二题。//枚举,按照字典序号进行排序。//start往后选择。核心代码等价于下面这段代码。//使用深度优先搜索。
2025-03-07 14:36:12
393
原创 利用递归求解平方根
给定程序中函数 fun 的功能是:应用递归算法求 a 的平方根。牛顿迭代法X(n+1)=(1/2)*(x(n)+(a/x(n)))//运用到了数学知识~~使用牛顿的迭代法推导而来。当x1-x0的误差小于一定小数时,x1就是结果。题目中的x0是初始值,设置为1.0。x(n)表示第n+1次的结果。
2025-03-07 12:57:42
141
原创 趣味剪格子
本题的要求就是请你编程判定:对给定的 m×n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。输出一个整数,表示在所有解中,包含左上角的分割区可能包含的最小的格子数目。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是 60。//结果要是得到左上角的格子数量,只能从最左上角的位置出发得到搜索。//currsum存储范围过的格子数字之和。//如果格子是奇数,就一定没有结果。//记录最小格子数量。
2025-03-05 15:38:46
747
原创 关空调(c++)
已知现在已知小明走的速度为每秒一个单位,每个空调的位置(是一个整数,即距零点的距离)、功率,小明关空调所用的时间很短而可以忽略不计。//比如你从第3台空调到第1台空调,花了3个时间,你从第1台空调到第2台空调,花了1个时间,time开始设置为0,每次关掉一台空调就加上对应的时间,例子中是3个时间,然后是再加1个时间,等效于从第3台空调到第2台空调要花4个时间(由于要中间要关掉第1台空调)//关掉了第i台空调,将第i台空调作为起点,关掉另外的空调。//计算从第index空调到第i台空调所用的时间。
2025-03-04 22:16:53
403
原创 谢谢你,陌生人(c++)
4.刷题本质就是实践,将知识用于问题中,刷题可能很难坚持,甚至结果不好,但自己在深思熟虑后认为刷题是正确,就要坚定不移的走下去,道路会曲折,但我们要不断调整,即使会有失败,不要灰心,这是在为自己开始的选择付出代价。//存储人与人之间的关系,有关系就设置为1,由于connect【】【】是全局变量,如没有初始化,就会被c/c++语法,默认为0,利用此点,没有关系就设置为0。3.每次写刷完一道题目,就立即总结,推荐无纸化笔记,将整个思路过程,写下来,或许有天遇到之前做过的题目,可以相互比较。int res=0;
2025-03-04 13:41:58
393
原创 191、求由正方形组成的图形的周长(c++)
网格中的1表示放了正方形的网格,0表示没有放正方形的网格。//深度优先搜索代码中int a=index1+x[i],b=index2+y[i]代表我此时的坐标可能变为是(0,1)(0,-1)(1,0)(-1,0)格子是1的不能算,因为每次深度优先搜索的前提是格子中数字是1,如果通过移动数组之后,格子中数字还是1,相当于两个小正方形贴在一起,边长被覆盖。//状态数组,记录我从开始到现在,位置(index1,index2)有没有被访问,访问过就不访问了,(我有没有算过这个格子的周长)//处理越界,周长加1。
2025-03-04 08:40:45
298
原创 A EASY PROBLEM
举个例子,假如给定的 N 为 78,其二进制表示为 1001110,包含 4 个 1 ,那么最小的比 N 大的并且二进制表示中只包含 4 个 1 的数是 83 ,其二进制是 1010011,因此 83 就是答案。num >>= 1;// 将 num 右移一位,相当于去掉最低位,以便检查下一位(也就是之前的靠左一位代替成了的现在最低位)while (num) { // 当 num 不为 0 时,继续循环,因为当 num 变为 0 时,说明已经检查完所有的位。//计算一个数的二进制表示中 1 的个数。
2025-03-03 09:56:32
230
原创 找钱(c++)
奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25、50、100元),而且饭堂阿姨一开始没有任何零钱。1.假设别人给我100,我先考虑一张50 25的零钱(因为50的零钱只适合给付出100的人,不能给付出50的人)if(temp==25)//如果别人给我25我直接收,因为每一份菜只要25,不用找零。//使用贪心算法,考虑优先使用 50 25、//只有使用25元才能给付出50的人找零钱。//如果只有50没有25也不行。//找完零钱后,别人给我的还是50元。//然后考虑额25 25 25。
2025-03-03 09:19:35
248
原创 键盘抢劫案(c++)
如果使用贪心:在处理第一件物品放不放之后,在处理第二件物品时,就不管第一件物品要不要拿出来(假设正确答案是不放第一件物品,选择放第二件物品才能导致将处理完所有物品后的价值最大)(使用网上的语言,就是认为我之前(处理第一件物品)的选择是最好,(也就是局部最优解))所以在处理第二件物品时,就不管第二件物品了。使用01背包问题(向容量为V的背包中放置体积为c价值为w的若干物品,一般会问你,怎样装物品,才能在背包容量允许的范围内,是的背包中物品价值的总和最大)这道题目要使用动态规划算法。// 读取剩余键盘的数量。
2025-03-03 08:45:01
254
原创 指数类型枚举
int st[N];//0表示没有考虑,1表示选到这个数字,2表示不选这个数。从1~n个整数中随机使用任意不相同的数,输出可能的选择方案。//由于对与1~n中的每一个数字都有 选与不选 两种选择。//比如st[x]记录要不要选择这个数字 x。//从第一个数字开始 也就是1。//使用递归搜索树来梳理递归逻辑。数据范围1<=n<=15.每一行输出方案数量;
2025-03-03 01:19:10
127
原创 P2089烤鸡(洛谷)
因为他有 $10$ 种配料(芥末、孜然等),每种配料可以放 $1$ 到 $3$ 克,任意烤鸡的美味程度为所有配料质量之和。//剪枝操作:提前结束递归,记忆化搜索:保存之前递归的结果,当某两次递归发生条件相同时,返回记忆化数组中的结果,减少继续搜索的时间。//引入后,后就不用再std::前缀,比如没引入前std::cout<<引入后 只需写cout<<//不选他,则选择下一种配料,回溯,回到上一层递归,将上一层递归中选择的结果删除,重新选择。
2025-03-03 01:06:33
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人