- 博客(25)
- 收藏
- 关注
原创 25.连号区间数
小明这些天一直在思考这样一个奇怪而有趣的问题:在 1∼N1∼N 的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间 [L,R][L,R] 里的所有元素(即此排列的第 LL 个到第 RR 个元素)递增排序后能得到一个长度为 R−L+1R−L+1 的“连续”数列,则称这个区间连号区间。当 NN 很小的时候,小明可以很快地算出答案,但是当 NN 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。
2025-03-30 16:10:01
273
原创 24.刷题统计
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 aa 道题目,周六和周日每天做 bb 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 nn 题?
2025-03-21 09:30:37
142
原创 23.SP15436 UCV2013H - Slick
一片大小为 $n\times m$ 的海面发生了石油泄漏,石油表示为 $1$,海水表示为 $0$。第 $2$ 至 $k$ 行每行两个整数 $i, j$,表示面积为 $i$ 的连通块有 $j$ 个。对于每组测试数据,第 $1$ 行输出一个整数 $k$,表示石油组成的连通块总数。后跟一个 $n\times m$ 大小的字符矩阵,表示海面的石油泄漏情况。对于每组测试数据,第一行两个整数 $n$ 和 $m$,表示海面的大小。对于 $100\%$ 的数据,$1 \le n, m\le250$。
2025-03-12 19:13:07
202
原创 22.全球变暖
q.empty()),当队列不为空的时候,循环遍历,先判断该点是否会被淹没,即判断四周四个位置是否都是陆地,如果四周都为陆地将不会被淹没;开始遍历四个方向,如果都是陆地且未被访问过 设为st[a][b]=true , 并将该点加到队列当中;在main函数中,遍历地图遇到陆地且未被访问过,设为flag=1,默认被淹没,bfs(i,j) 开始搜索。照片保证第 $1$ 行、第 $1$ 列、第 $N$ 行、第 $N$ 列的像素都是海洋。第一行包含一个整数 $N$。以下 $N$ 行 $N$ 列代表一张海域照片。
2025-03-12 16:10:53
265
原创 21.Meteor Shower S
根据预报,一共有 $M$ 颗流星 $(1\leq M\leq 50,000)$ 会坠落在农场上,其中第 $i$ 颗流星会在时刻 $T_i$($0 \leq T _ i \leq 1000$)砸在坐标为 $(X_i,Y_i)(0\leq X_i\leq 300$,$0\leq Y_i\leq 300)$ 的格子里。共 $M+1$ 行,第 $1$ 行输入一个整数 $M$,接下来的 $M$ 行每行输入三个整数分别为 $X_i, Y_i, T_i$。贝茜到达安全地点所需的最短时间,如果不可能,则为 $-1$。
2025-03-11 21:11:56
231
原创 20.填涂颜色
如果从某个 $0$ 出发,只向上下左右 $4$ 个方向移动且仅经过其他 $0$ 的情况下,无法到达方阵的边界,就认为这个 $0$ **在闭合圈内**。闭合圈不一定是环形的,可以是任意形状,但保证**闭合圈内**的 $0$ 是连通的(两两之间可以相互到达)。由数字 $0$ 组成的方阵中,有一任意形状的由数字 $1$ 构成的闭合圈。接下来 $n$ 行,由 $0$ 和 $1$ 组成的 $n \times n$ 的方阵。对于 $100\%$ 的数据,$1 \le n \le 30$。## 输入输出样例 #1。
2025-03-11 19:50:22
138
原创 19.血色先锋队
第 $1$ 行:四个整数 $n$,$m$,$a$,$b$,表示军团矩阵有 $n$ 行 $m$ 列。第 $1$ 至 $b$ 行:每行一个整数,表示这个领主感染瘟疫的时间,输出顺序与输入顺序一致。对于 $100\%$ 的数据,保证 $1\le n,m\le500$,$1\le a,b\le10^5$。接下来 $b$ 行:每行有两个整数 $x$,$y$,表示领主的位置在第 $x$ 行第 $y$ 列。接下来 $a$ 行:每行有两个整数 $x$,$y$,表示感染源在第 $x$ 行第 $y$ 列。
2025-03-10 21:19:28
176
原创 18.马的遍历
对于全部的测试点,保证 $1 \leq x \leq n \leq 400$,$1 \leq y \leq m \leq 400$。有一个 $n \times m$ 的棋盘,在某个点 $(x, y)$ 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。一个 $n \times m$ 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 $-1$)。输入只有一行四个整数,分别为 $n, m, x, y$。# P1443 马的遍历。## 输入输出样例 #1。### 数据规模与约定。
2025-03-10 19:57:51
142
原创 17.离开中山路
现在爱与愁大神在 $x_1,y_1$ 处,车站在 $x_2,y_2$ 处。现在给出一个 $n \times n(n \le 1000)$ 的地图,$0$ 表示马路,$1$ 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。第 $2$ 行到第 $n+1$ 行:整个地图描述($0$ 表示马路,$1$ 表示店铺,注意两个数之间没有空格)。对于 $100\%$ 数据,满足 $1\leq n \le 1000$。第 $n+2$ 行:四个数 $x_1,y_1,x_2,y_2$。
2025-03-10 16:43:15
202
原创 16.数的划分
将整数 $n$ 分成 $k$ 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。提前减枝操作, sum+(k-x+1)*i<=n的时候。例如:$n=7$,$k=3$,下面三种分法被认为是相同的。# P1025 [NOIP 2001 提高组] 数的划分。NOIP 2001 提高组第二题。$1$ 个整数,即不同的分法。## 输入输出样例 #1。问有多少种不同的分法。**【题目来源】**
2025-03-09 17:25:17
167
原创 15.棋盘问题
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 k个棋子的所有可行的摆放方案数目 C。
2025-03-09 16:40:00
186
原创 14.火柴棒等式
给你n根火柴棍,你可以拼出多少个形如 $A+B=C$ 的等式?等式中的 $A$、$B$、$C$ 是用火柴棍拼出的整数(若该数非零,则最高位不能是 $0$)。dfs的题目,考虑用一个数组来存放每个数字对应的木柴数量,之后>9的数字需要用函数计算所需的木柴数量;2. 如果 $A\neq B$,则 $A+B=C$ 与 $B+A=C$ 视为不同的等式($A,B,C\geq0$);$2$ 个等式为 $0+1=1$ 和 $1+0=1$。一个整数 $n(1 \leq n\leq 24)$。noip2008 提高第二题。
2025-03-04 15:59:42
309
原创 13.组合的输出
递归的从start开始,遍历到n,每次选取一个数组来放到数组中,arr[x]=i;排列与组合是常用的数学方法,其中组合就是从 n个元素中抽出 r个元素(不分顺序且 r <=n),我们可以简单地将 n个元素理解为自然数 1,2,...,n,从中任取r个数。x代表当前要填充的组合的位置。递归过程中,start总比上一个大,保证组合中的数字是递增的,避免重复组合。所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。输出占 3 个场宽的数 x。
2025-03-03 09:31:29
193
原创 12.全排列问题
按照字典序输出自然数 $1$ 到 $n$ 所有不重复的排列,即 $n$ 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。由 $1 \sim n$ 组成的所有不重复的数字序列,每行一个序列。每个数字保留 $5$ 个场宽。# P1706 全排列问题。## 输入输出样例 #1。
2025-03-02 21:24:13
127
原创 11.分割等和子集
(3)递推公式:dp[j]=max(dp[j],dp[j-nums[i]]+nums[i]);dp[j]的最大价值就是要放物品i,和不放物品i 时,取得的最大值。动态规划01背包问题,题目要求拆分为两个相同的子集,先对所给数组求和,再对数组区一半,设置为target,即要求的子集的和,如果sum/2==1;(4)开始遍历,首先遍历物品(数组的值),再遍历背包的容量,采用倒序的遍历顺序 for(int i=0;动态规划问题,(1)dp[j]代表的是容量为j时的最大价值为dp[j]
2025-03-01 09:13:37
140
原创 10.时间显示
输出时分秒表示的当前时间, 格式形如 $\mathrm{HH}: \mathrm{MM}: \mathrm{SS}$, 其中 $\mathrm{HH}$ 表示时, 值 为 $0$ 到 $23, \mathrm{MM}$ 表示分。$\mathrm{SS}$ 表示秒, 值为 $0$ 到 $59$。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。小蓝不用显示出年月日,只需要 显示出时分秒即可,毫秒也不用显示,直接舍去即可。
2025-02-24 20:17:59
311
原创 9.求和(蓝桥杯)
观察这个式子,把它结合,a1*(a2+a3+...+an),a2*(a3+a4+a5+...+an),a3*(a4+a5+a6+...+an)...... ----->>ai*(ai+1 +ai+2 + ....+an) ----->ai*(bn-bi)对于 $30 \%$ 的数据, $1 \leq n \leq 1000,1 \leq a_{i} \leq 100$。给定 $n$ 个整数 $a_{1}, a_{2}, \cdots, a_{n}$, 求它们两两相乘再相加的和,即。
2025-02-24 19:45:58
214
原创 8.修剪灌木
有 $N$ 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木,让灌木的高度变为 $0$ 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。灌木每天从早上到傍晩会长高 $1$ 厘米, 而其余时间不会长高。在第一天的早晨, 所有灌木的高度都是 $0$ 厘米。输出 $N$ 行, 每行一个整数, 第行表示从左到右第 $i$ 棵树最高能长到多高。对于 $100 \%$ 的数据, $1<N \leq 10000$.对于 $30 \%$ 的数据, $N \leq 10$.
2025-02-24 17:19:11
135
原创 7.冶炼金属
当 $V=25$ 时,有:$\left\lfloor\frac{75}{25}\right\rfloor=3,\left\lfloor\frac{53}{25}\right\rfloor=2,\left\lfloor\frac{59}{25}\right\rfloor=2$,可以看到符合所有冶炼记录。现在给出了 $N$ 条冶炼记录,每条记录中包含两个整数 $A$ 和 $B$,这表示本次投入了 $A$ 个普通金属 O,最终冶炼出了 $B$ 个特殊金属 X。第一行一个整数 $N$,表示冶炼记录的数目。
2025-02-24 16:30:44
404
原创 6.好数(蓝桥杯)
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位。精妙之处:它的位数的奇偶性与位数上所对应的相同,比如个位是第1位,要求是奇数,十位是第2位,要求是偶数。$24$ 以内的好数有 $1,3,5,7,9,21,23$,一共 $7$ 个。- 对于 $10\%$ 的测试数据,$1 \leq N \le 100$。给定一个正整数 $N$,请计算从 $1$ 到 $N$ 一共有多少个好数。- 对于全部的测试数据,$1 \le N \leq 10^7$
2025-02-24 15:55:45
129
原创 5.平方差
它的作用是计算某个数 x 左侧的所有奇数的数量。简单题,利用平方差公式,x=(y-z)(y+z)=a*b a=y-z, b=y+z。当x为偶数的时候,可以拆为a=2,b为也是关于2的倍数,所以,是4的倍数;当x为奇数的时候,可以拆为a=1,b为任何数,所以在范围内,奇数都满足;它的作用是计算某个数 x左侧的所有能被4整除的整数的数量。给定L,R,问 L R 中有多少个数x满足存在整数y,z 使得x=y^2-z^2。要计算l-r 范围内的,直接计算r左边所有的减去l-1左边的即可。
2025-02-24 15:43:06
229
原创 4.训练士兵
遍历每个士兵,从轮数1开始遍历,如果单独训练的所有士兵一次的花费要大于组团训练,选择组团训练,开始更新ans记录当前的花费,ans=0+s=6,sum=24-8=12,now=8-0=8;题目的精妙在于,使用cnt数组来记录训练c[i]次士兵一次训练所需的花费,在更新数据的时候,当有的士兵已经结束训练次数结束的时候,要更新现在剩余所有士兵训练一次所需的花费,即now值。接下来的n行,每行包含两个整数p_i 和c_i,用一个空格分隔,表示第i名士兵进行一次训练的金币成本和要成为顶尖战士所需的训练次数。
2025-02-24 09:53:33
397
原创 3.KMP模版题
KMP算法主要用于字符串的匹配,它的主要思想就是当出现字符不匹配时,可以知道一部分已经匹配的文本内容,可以利用这些信息避免从头再去做匹配;给出两个字符串 s1 和 s2,若 s1 的区间 [l,r] 子串与 s2 完全相同,则称 s2 在 s1 中出现了,其出现位置为 l。最后一行输出 ∣s2∣ 个整数,第 i 个整数表示 s2 的长度为 i 的前缀的最长 border 长度。j:指向前缀末尾的位置,用来表示当前前缀的匹配长度。的子串 t,满足 t 既是 s 的前缀,又是 s 的后缀。
2025-02-14 10:38:53
352
原创 2.反转字符串中的单词
(3)将单词翻转:遍历字符串,当遇到空格说明第一个字符串结束,就翻转他,这个歌时候可以设定一个变量start记录单词的首字母的下标;for循环开始遍历每个字符,遇到非空格的(单词开始出现)开始处理记录slow,注意观察只有第一个单词前面没有空格,后面的都是一个空格+一个单词;返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。注意:去掉空格之后,要改变字符串的长度,s.resize(slow);如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。
2025-02-13 00:47:54
332
原创 1.三数之和
例如:-1,-1,-1,2 ,2 a=-1,b=-1,c=2时,三数之和为0,这个时候,i=0,left=1,right=4,当指针接着移动,i=1,left=2,right=4时还满足条件,但是三元组重复了。right去重,nums[right]==nums[right-1],right是要从末尾向前移动的额,所以right--;left去重思想,类似,nums[left]==nums[left+1],要与后面的数做比较,相等直接left++;注意,输出的顺序和三元组的顺序并不重要。
2025-02-11 21:37:46
188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人