刷题合集
文章平均质量分 55
刷题
Alva_Kohler
少壮不努力,老大要重修
展开
-
【力扣剑指 Offer 47】礼物的最大价值
动态规划原创 2023-03-09 15:46:11 · 267 阅读 · 0 评论 -
【力扣2379】 得到 K 个黑块的最少涂色次数(c++100%)
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。不走回头路,以第一组的值为最小,以k为窗口遍历,其中只需要知道因为移动被踢出窗口和进入窗口的分别是谁,如果被踢出的是B,进来的是W,那需要加一,反之减一。一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。blocks[i] 要么是 'W' ,要么是 'B'。终于遇到简单一点的了。所以我们返回 3。原创 2023-03-09 14:35:08 · 402 阅读 · 0 评论 -
【力扣1653】使字符串平衡的最少删除次数
当不存在下标对 (i,j) 满足 i < j ,且 s[i] = 'b' 的同时 s[j]= 'a' ,此时认为 s 是 平衡 的。假设我们确定了断点是i这个位置,假设[0,i-1]是a,[i,end]是b,怎么计算要删除多少?我觉得这是一道挺典型的前缀和的题目,但是是假前缀和->如果你想节省空间的话,不用全记。给你一个字符串 s ,它仅包含字符 'a' 和 'b'。=>[0,i-1]中b的个数+[i,end]中a的个数。s[i] 要么是 'a' 要么是 'b'。前a后b,枚举的是断点。原创 2023-03-06 16:41:30 · 331 阅读 · 0 评论 -
【力扣1599】 经营摩天轮的最大利润
给你一个长度为 n 的数组 customers , customers[i] 是在第 i 次轮转(下标从 0 开始)之前到达的新游客的数量。注意,如果有超过 4 位游客在等摩天轮,那么只有 4 位游客可以登上摩天轮,其余的需要等待 下一次轮转。你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客。另外我记了一人,二人,三人,四人登机的价格,这样也减少计算量。我一开始盯着那个免费进行后续轮转看了半天,不知道是我不需要向那些游客额外收费还是我不需要被收轮转费。原创 2023-03-05 15:05:45 · 402 阅读 · 0 评论 -
【982】按位与为零的三元组
假设这个0是第i个数(从0开始计数),那么它能成的可能就有3*(l-i)*(l-i-1)+1种,+1的原因是三个自己也是能成的。第四条很简单,三个数排列组合,基本问题,答案是6种。所以,我们仔细观察会发现,如果是第三种情况,其实它有两个数的按位与结果是已经算过的。然后遍历两数集合的所有结果,找出三个数也是0的组合。nums[i] & nums[j] & nums[k] == 0 ,其中 & 表示按位与运算符。鼠鼠我啊,学艺不精,第一个入脑的就是暴力解,最后还是通过了。如果遇到两个数按位与刚好能成的怎么办。原创 2023-03-04 16:08:05 · 431 阅读 · 0 评论 -
【力扣1487】保证文件名唯一
输入:names = ["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece"]输出:["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece(4)"]这道题是一个典型的map字典练习题。输出:["kaido","kaido(1)","kaido(2)","kaido(1)(1)"]输出:["wano","wano(1)","wano(2)","wano(3)"]原创 2023-03-03 13:56:48 · 334 阅读 · 0 评论 -
【力扣】 面试题 05.02.二进制数转字符串(超过c++100%)
笑死,看见题目下面说最多只有6位我就有了一个恶毒的方法:直接建立map字典,从1位小数算到6位小数(即从包含"0."的3位到8位),这时候就是很明显的一道dfs题目了!结果超过了100%哈哈。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。本来就应该只有6位,因为这个小数只有6位,放到7位方便判断error,如果到7才跳出,说明不符合要求。然后看了看官方题解,学了一下小数应该怎么转进制——>移位。原创 2023-03-02 16:50:46 · 275 阅读 · 0 评论 -
【力扣121】买卖股票的最佳时机
我们知道,当股价是a1,a2,a3时,a3-a1=a3-a2+a2-a1,即连续子数组的和为该买卖股票时间的利润。对于不包含中点的子数组问题呢,我们可以再把它视作一个单独的数组,它的最大子数组还是有上面所述三种可能,所以再走一遍流程就可以了,最后我们决出其中最大的输出。在一组数上,最大和产生的位置有三种,左(不到中点),中(包含乃至跨越中点),右(在中点右边不包含中点)。大的和小的拥有一样的性质,一分为二缩小运算规模。上学期学算法的时候分治算法里的例题就是最大子数组问题,这次正好刷到啦。原创 2023-02-28 17:39:21 · 120 阅读 · 0 评论 -
【csp202212-2】训练计划(c++100)
依赖,则开始时间在被依赖项的开始时间上加上被依赖项的练习时间;其中如果开始时间+练习时间>n,则说明不能在时间内完成,只需要输出开始时间。这么解释吧,如果这个叶子结点下没有叶子结点,则这个叶子结点需要花费的最长时间就是它本身的练习时间。递推上它的父结点,父结点需要花费的时间就是父结点的练习时间+其子结点中需要花费的最长时间。一个结点一旦有叶子结点,意味着它的最迟开始时间需要提前,提前的时间则为叶子结点中最长需要花费的时间。一个训练的最迟开始时间:如果不依赖,则为距离大赛开幕的天数n+1-练习时间。原创 2023-02-27 17:29:30 · 521 阅读 · 0 评论 -
【csp202209-2】何以包邮?
比如说10 20 30 40 50 60 70,我可以算得10+20+30,算不得10+20+40。一开始不知道这种方法,但当时大致思路和这个很像,自己做的时候只有25。思路就是求出所有可能,遇到满足条件的就检查是否需要更新结果。第三次再查阅资料,看到了这种方法。第二次查阅资料,学会下面这种做法,25->70。同样是记录下所有可能,原创 2023-02-25 19:10:28 · 848 阅读 · 0 评论 -
【csp202206-2】寻宝!大冒险!(c++100分)
排序后遍历,对于每棵树,如果不足以延伸出一个和藏宝图小矩阵一样大的矩阵(即L-sx原创 2023-02-25 16:20:44 · 1579 阅读 · 2 评论 -
【csp202203-2】出行计划(前缀和法详解)
先对原数组基于t-(c-1)-k从小到大进行排序,从第二次查询开始,我们查询的答案其实是:从上一次查询的答案中减去q>t-k的部分,再加上后续q>=t-(c-1)-k的部分。如果q==1,那么对应查询的数量就是:所有t-(c-1)-k原创 2023-02-24 22:11:14 · 716 阅读 · 0 评论 -
【csp202112-2】序列查询新解
N最大为10^9,遍历N就是我第一次写的时候,超时了,那我们只能遍历数组a,移动N的x区间。第一次写的时候直接做的,70分运行超时,最近几次的第二题都是这个套路,坏的很。基于我说的两条规则,可以画出六种f(x)和g(x)值不变时区间的关系。对于a[i]和a[i-1]之间的x,它们的f(x)都是i-1。对于kr和(k-1)r之间的x,它们的g(x)都是(k-1)对于两者区间交叉中的差值恒定,区间中整数的个数*差值即可。如果a[i]>kr,那就后移kr直到kr>=a[i]如果a[i]原创 2023-02-24 15:29:01 · 364 阅读 · 0 评论 -
【csp202109-2】非零段划分(c++100)
当将一个非0数变为0时,如果它在头,右边是0,那就少一个非0段,右边不是0,那就多一个非0段;如果在中间,左右两边是否都为0或都不为0,情况同上。从202012开始的第2题都很注重空间换时间,这道题笨方法是会循环两遍的,1.0s肯定超时,那要思考之前求取的结果有没有用,怎么用。知道一个数的位置不一定非要遍历,我们可以把它记下来,用一个二维数组,纵坐标就是这个数,里面存的是这个数在这个数组中出现的位置。第一次只拿了50分,我看好多人拿的都是70分,结果一看,空间使用258.9MB,吓一跳,但思路没有错。原创 2023-02-23 18:43:44 · 598 阅读 · 0 评论 -
【csp202104-2】邻域均值
不过该图像仅在较暗区域有很多噪点,如果贸然对全图进行降噪,会在抹去噪点的同时也模糊了原有图像。所以,上一个矩阵的和是可以存储的,移动之后只需要根据需要加减就可以了,运行效率会比反复求矩阵的和要高。矩阵的移动,水平移是可能少一列,可能多一列,可能既少一列又多一列。下图给出了两个例子,左侧图像的较暗区域在右侧图像中展示为黑色,其余区域展示为白色。输出一个整数,表示输入灰度图像中处于较暗区域的像素总数。老规矩,笨方法试一遍,第一次做,70分,运行超时。范围内的整数,表示对应位置像素的灰度值。附近元素的具体范围。原创 2023-02-23 09:31:09 · 133 阅读 · 0 评论 -
【csp202012-2】期末预测之最佳阈值
这里的预测正确次数其实和前一次是有关联的,即:本次预测正确次数=前一次预测正确次数-上一个y值中r=1的个数+上一个y值中r=0的个数。这道题很像算法分析课上动态规划一章中讲过的钢条切割问题,我们注意到这一章中很重要的一点:存储子问题结果,不需要重复求取。第一次做的时候很直接,遍历再遍历求预测正确次数,时间是n*n。位同学上学期的挂科情况进行预测,预测正确的次数最多(即准确率最高);另外,相同的数字不需要走这一步,只需要判断r==0还是r==1并计数。转化为一个具体的预测结果——“会挂科”或“不会挂科”。原创 2023-02-22 17:33:10 · 131 阅读 · 0 评论 -
【csp201912-1】报数(c++和python)
40->80:最大范围不过1700,需要考虑个十百三位(都要考虑,一开始我只考虑了第一位和第二位)以及7的倍数。轻敌了,这道题第一次拿40,第二次拿80,要是在考场上真的心态会崩。80->100:我的计数从1开始,题目计数从0开始,即我多算了一次。原创 2023-02-21 13:43:01 · 234 阅读 · 0 评论 -
【csp201909-2】小明种苹果(续)
有n棵树,每棵树都有m个数据,第一个数据为初始苹果数量,后续数据如果小于等于0,则为疏果,如果大于0,则为重新统计,如果现有和统计值不同,则记做落果。第一次只拿了50分,因为题目所给的测试样例都只落果一次,如果落果多次是不能重复计数的。另外第一棵树和第二棵树需要另外单独拿出来做标记,因为它们和最后两棵树有关系。里面需要多次使用的数据是有限个的(相对考生而言)题目虽然长了点,但总体来说不难理解。原创 2023-02-20 16:57:39 · 364 阅读 · 0 评论 -
【csp201903-2】二十四点
一开始看到要将一个式子翻译出来并计算的时候我有想到数据结构课上讲的后缀表示法和前缀表示法,里面很重要一点就是栈,但我们为什么要用栈呢。因为后缀表示法是按规则将数字和符号拆开了(相对而言),我们需要恢复这个规则。后续大概会复习一下数据结构。先拆开式子,符号是符号,数字是数字,然后先算乘除,最后再做加减。其中前两步我融为了一步。想通这个问题之后,我们回到问题本身,后缀表示法是不是也是先乘再加?我们用数组模仿这个。原创 2023-02-20 15:51:56 · 269 阅读 · 0 评论 -
【csp201812-2】小明放学
小明到达路口时,这个红绿灯已经变为红灯,还剩 11 秒。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。第一个(60分->100分):因为测试点最多有10^5个,t最大为10^6,即总数最大为10^11,远远超过int的范围,需要把结果的计数单位改为long long。一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。,此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 t,此处 t 分别不会超过 r、y、g。原创 2023-02-11 18:46:01 · 155 阅读 · 0 评论 -
【csp201809-2】买菜
从1到1000000循环检查是否符合情况也不是很耗时,我们可以限制一下起始和终止点,起始点是最迟开始的人,终止点是最早结束的人,如果这个点都在甲和乙中(算头不算尾),则可以加一,如果比甲开始时间早,则忽略,不早于甲结束时间,则甲指针++,乙同理。感觉自己写麻烦了,同样的思路完全可以换一种表示方式(就是说,从1-1000000这么多个点设为一个大小为1000000的数组,初始值为0,如果甲在,则相应的点+1,乙同理,最后求值为2的点的个数就行了)接下来n行每行两个数ai,bi,描述小H的各个装车的时间段。原创 2023-02-11 13:10:58 · 185 阅读 · 0 评论 -
【csp201712-2】游戏
首先,面对限制条件很简单题目,我们需要一字不落的翻译,不要耍小聪明。我一开始只求了末位数,后来又把末位数等于k看成了末位数是k的倍数,显然都不会通过。游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……当k=1时,所有数都是1的倍数,结果只会是最后一个数,直接输出就好了。,则该小朋友被淘汰出局,不再参加以后的报数。输出一行,包含一个整数,表示获胜的小朋友编号。1号小朋友报数6淘汰;原创 2023-02-05 22:50:45 · 63 阅读 · 0 评论 -
【csp201703-2】学生排队(c++)
1)第一次调整,命令为“3号同学向后移动2”,表示3号同学出队,向后移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 3, 6, 7, 8;3)第三次调整,命令为“3号同学向前移动2”,表示3号同学出队,向前移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 3, 5, 8, 6, 7。接下来m行,每行两个整数p, q,如果q为正,表示学号为p的同学向后移动q,如果q为负,表示学号为p的同学向前移动-q。,表示学生的数量,学生的学号由1到。原创 2023-02-03 21:40:47 · 316 阅读 · 0 评论 -
【csp201604-3】路径解析c++
如果当前目录是 /d2/d3,这个文件也可以用相对路径 ../d4/f1 来指定,这里 .. 表示上一级目录(注意,根目录的上一级目录是它本身)。注意,如果有多个连续的 / 出现,其效果等同于一个 /,例如 /d1///f1 指定的也是 /d1/f1。另一个例子,比如当前目录/d2/d3,有文件../f1,那么这个..所在文件是/d2/d3,上一级为/d2,所以该文件为/d2/f1。举个例子,比如文件/d1/../f1,这个..所在文件为/d1,它的上一级为/,所以该文件为/f1。原创 2023-01-27 19:06:42 · 89 阅读 · 0 评论 -
【csp201609-2】火车购票c++
购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。这道题我印象巨深,大一的时候刷过,当时折腾了好久,还用了二维数组。我其实有纠结过,要不要记录第一个未满的行,可以省时间,但是想想看应该不会超时,就20行,算了不折腾自己。在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。,表示购票指令的数量。原创 2023-01-26 17:03:34 · 330 阅读 · 0 评论 -
【csp201512-3】画图(c++)
画线:给出两个端点的坐标,画一条连接这两个端点的线段。水平线段用字符 - 来画,竖直线段用字符 | 来画。 填充:给出填充的起始位置坐标和需要填充的字符,从起始位置开始,用该字符填充相邻位置,直到遇到画布边缘或已经画好的线段。注意这里的相邻位置只需要考虑上下左右 4 个方向,如下图所示,字符 @ 只和 4 个字符 * 相邻。用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。画布的左下角是坐标为 (0, 0) 的位置,向右为。2:表示画线段的操作,(原创 2023-01-26 17:05:19 · 292 阅读 · 0 评论 -
【csp201703-3】Markdown
`,在最后一行行末插入 `原创 2023-01-22 11:42:36 · 141 阅读 · 0 评论 -
【csp201409-2】画图
一开始我想过跟着题目思路走,求重叠部分的面积并减掉,不成功,后来我想过反其道而行之,将它补全成一个大矩形求其中空白的面积,肯定也不成功,因为他们都面临着同一个问题:面积会重复计算。在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。但是还有一个要注意的点,这边给的是点的坐标,而我们要求的实际上是一个面。接下来n行,每行4个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。原创 2023-01-17 14:45:01 · 208 阅读 · 1 评论 -
【力扣】69. x 的平方根
但是69用二分法还有一个坑。如果你用乘积结果和输入的数比较,会发现超时。大数除中数变成中数和中数比总比中数乘中数变成大数进行比较好。第一天做的是力扣15pow这题,直挺挺地写,不幸折戟。看了题解,恍然大悟。至于我的做法踩了另一个坑。因为我的低值是1,所以当输入为0时要单独讨论。这两题都是典型的二分法(而69是其中比较基础的二分,直挺挺地写就行了)原创 2023-01-04 12:41:16 · 46 阅读 · 0 评论 -
力扣290单词规律
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。这道题真的要很细心(也可以粗心,学我把坑踩个遍),我学艺不精,用python试图改进,但是效率越改越差。输入: pattern = "abba", s = "dog cat cat dog"输入:pattern = "abba", s = "dog cat cat fish"。输入: pattern = "aaaa", s = "dog cat cat dog"(方法一:效率较高)原创 2022-12-12 22:01:15 · 246 阅读 · 0 评论 -
csp201803-2碰撞的小球(c++和python)
数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。因为所有小球的初始位置都为偶数,而且线段的长度为偶数,可以证明,不会有三个小球同时相撞,小球到达线段端点以及小球之间的碰撞时刻均为整数。输入的第一行包含三个整数n, L, t,用空格分隔,分别表示小球的个数、线段长度和你需要计算t秒之后小球的位置。现在,告诉你线段的长度L,小球数量n,以及n个小球的初始位置,请你计算t秒之后,各个小球的位置。输出一行包含n个整数,用空格分隔,第i个整数代表初始时刻位于ai的小球,在t秒之后的位置。原创 2022-12-08 20:32:16 · 130 阅读 · 0 评论 -
csp201403-2窗口(c++和python)
问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。 现在我们希望你写一个程序模拟点击窗口的过程。输入格式 输入的第一行有两个正整数,即 N原创 2022-12-06 18:17:29 · 354 阅读 · 0 评论 -
CSP202006-1 线性分类器(python和c++)
题目没办法复制,放一下里面的测试样例。这道题没什么好说的,耐下性子看就完事了难得一遍过的题,可喜可贺。pythonc++周末有一道markdown的题目,我思路出了问题,争取今晚改好今晚发送原创 2022-12-06 09:18:41 · 218 阅读 · 0 评论 -
csp201709-2公共钥匙盒(python和c++)
每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上。c++(照着python翻译的,两个案例都过了,在本地环境上能正常运行,没有错误,但是上了csp就怎么都运行不了,一直说编译错误,查了说是csp的编译环境太老了。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。位老师要上课,给出每位老师所需要的钥匙、开始上课的时间和上课的时长,假设下课时间就是还钥匙时间,请问最终钥匙盒里面钥匙的顺序是怎样的?但是题目给的是1 2这样的形式。原创 2022-12-02 22:08:14 · 239 阅读 · 0 评论 -
csp201312-2(python和c++)
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…首先明确任务,算的部分是要求输入数组第[0,2,3,4,6,7,8,9,10]位分别和1,2,……(我踩了一脚又一脚……原创 2022-11-30 16:11:41 · 161 阅读 · 0 评论 -
CSP 201803-1(python和c++两种)
跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8...)。python input输入是一个字符串,用split可以将字符串中每一个元素分割开来,形成一个list(忽略空格)简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。c++解法(还是c++的输入朴实无华(被打。原创 2022-11-30 16:03:38 · 168 阅读 · 0 评论