自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(376)
  • 收藏
  • 关注

原创 1038 Recover the Smallest Number (30)

【代码】1038 Recover the Smallest Number (30)

2025-05-28 08:28:42 216

原创 1095 Cars on Campus (30)

【代码】1095 Cars on Campus (30)

2025-05-27 16:39:36 511

原创 1080 Graduate Admission (30)

【代码】1080 Graduate Admission (30)

2025-05-27 15:41:44 762

原创 1055 The World‘s Richest (25)

【代码】1055 The World‘s Richest (25)

2025-05-27 13:00:48 429

原创 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 D: 数列-训练套题T10T3

分析:思路类似问题 A,先求出一个数左边有多少比它小,再求出一个数的右边有多少比它小。而问题 A 中已经知道了前面怎么求,那么求右边有多少比它大,可以把这个数组反过来存,问题就转化为求左边有多少比它小。一个简单的数列问题:给定一个长度为n的数列,求这样的三个元素ai, aj, ak的个数,满足ai < aj > ak,且i < j < k。一个数,满足ai < aj > ak (i < j < k)的个数。第二行n个整数ai(0 <= ai <= 32767)。第一行是一个整数n(n <= 50000)。

2025-05-26 20:20:49 172

原创 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 C: Count Inversions

每组输入数据占一行,每一行是一个数组,数组之间的元素用空格分开。每组输出结果占一行。对应于每组输入数据的inversions。给一个数组,算inverted pair的数目。

2025-05-26 19:35:22 140

原创 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 B: 区间查询

食堂有N个打饭窗口,现在正到了午饭时间,每个窗口都排了很多的学生,而且每个窗口排队的人数在不断的变化。接下来一行输入N个正整数,第i个正整数ai表示第i个窗口最开始有ai个人排队。(3)Query i j,i和j为正整数,i<=j,表示询问第i到第j个窗口的总人数;(1)Add i j,i和j为正整数,表示第i个窗口增加j个人(j不超过30);(2)Sub i j,i和j为正整数,表示第i个窗口减少j个人(j不超过30);每组输入的第一行是一个正整数N(N<=30000),表示食堂有N个窗口。

2025-05-26 19:12:38 118

原创 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 A: 最少的交换

现在给你一个由n个互不相同的整数组成的序列,现在要求你任意交换相邻的两个数字,使序列成为升序序列,请问最少的交换次数是多少?输入包含多组测试数据。每组输入第一行是一个正整数n(n<500000),表示序列的长度,当n=0时。接下来的n行,每行一个整数a[i](0<=a[i]<=999999999),表示序列中第i个元素。对于每组输入,输出使得所给序列升序的最少交换次数。

2025-05-26 18:51:03 98

原创 1057 Stack(30)

【代码】1057 Stack(30)

2025-05-25 19:36:39 676

原创 《算法笔记》13.1小节——专题扩展->分块思想 问题 A: 区间查询

食堂有N个打饭窗口,现在正到了午饭时间,每个窗口都排了很多的学生,而且每个窗口排队的人数在不断的变化。接下来一行输入N个正整数,第i个正整数ai表示第i个窗口最开始有ai个人排队。(3)Query i j,i和j为正整数,i<=j,表示询问第i到第j个窗口的总人数;(1)Add i j,i和j为正整数,表示第i个窗口增加j个人(j不超过30);(2)Sub i j,i和j为正整数,表示第i个窗口减少j个人(j不超过30);每组输入的第一行是一个正整数N(N<=30000),表示食堂有N个窗口。

2025-05-25 16:54:11 133

原创 《算法笔记》12.2小节——字符串专题->KMP算法 问题 C: 剪花布条

输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。

2025-05-25 16:07:16 215

原创 《算法笔记》12.2小节——字符串专题->KMP算法 问题 B: P2 统计单词数

注意:匹配单词时,不区分大小写,但要求完全匹配,即单词必须与文章中某一独立残次在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。只有1行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中的次数。

2025-05-25 16:04:49 221

原创 《算法笔记》12.2小节——字符串专题->KMP算法 问题 A: 动物简介(animal)

为了卖弄自己的英文水平,琦琦就告诉妈妈每张动物简介里出现了多少次该动物的名称。注意:琦琦只认识小写字母,而且她只认得动物的单词,因此她认为monkeys或者smonkey或者smonkeys都是出现了monkey这个词。到了动物园,琦琦开心得跳起来。,在开心之余,琦琦也不忘妈妈的教导:观察动物时要认真仔细,还要看动物园附上的动物简介呀。接着是n行,每行为一个长度小于250个字符的字符串,表示动物的简介。输出文件共1行,为简介里出现了多少次琦琦能识别出的动物的单词。第2行为一个单词,表示琦琦认识的动物名称。

2025-05-25 16:01:37 270

原创 leetcode 2131. 连接两字母单词得到的最长回文串 中等

最长回文串是 "ty" + "lc" + "cl" + "yt" = "tylcclyt" ,长度为 8。一个最长的回文串为 "lc" + "gg" + "cl" = "lcggcl" ,长度为 6。"ll" 是另一个可以得到的最长回文串。"lcyttycl" 是另一个可以得到的最长回文串。"clgglc" 是另一个可以得到的最长回文串。如果没办法得到任何一个回文串,请你返回。最长回文串是 "cc" ,长度为 2。请你返回你能得到的最长回文串的。中每个元素都是一个包含。小写英文字母的单词。

2025-05-25 11:10:41 191

原创 《算法笔记》12.1小节——字符串专题->字符串hash进阶 问题 A: 求最长公共子串(串)

求采用顺序结构存储的串s和串t的一个最长公共子串,若没有则输出false,若最长的有多个则输出最先出现的那一串。

2025-05-21 21:21:17 280

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 I: 毕业bg

现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最 大的快乐度。则获得最大快乐度的安排应该是:先开始第3场,获得快乐度6,在第1小时结束,发起人也来得及离开;再开始第2场,获得快乐度10,在第3小时结束,发起人正好来得及离开。注意bg必须在发起人离开前结束,你不可以中途离开一场bg,也不可以中途加入一场bg。第1场快乐度为5,持续1小时,发起人必须在1小时后离开;第4场快乐度为3,持续1小时,发起人必须在1小时后离开。

2025-05-21 14:50:02 301

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 H: 最大报销额

首先要按照题目的要求计算后判断每张发票的有效性,接着是一个动态规划算法(没见过类似题目的同学可以搜一下“背包问题”),对于此题,由于题目交代了所有金额都只到小数点后两位,因此乘以100后即是整数,从而可以转化为01背包问题,用dp[i]表示到达总金额为i的有效性。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。

2025-05-21 14:46:37 128

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 G: 点菜问题

北大网络实验室经常有活动需要叫外买,但是每次叫外买的报销经费的总额最大为C元,有N种菜可以点,经过长时间的点菜,网络实验室对于每种菜i都有一个量化的评价分数(表示这个菜可口程度),为Vi,每种菜的价格为Pi, 问如何选择各种菜,使得在报销额度范围内能使点到的菜的总评价分数最大。输入的第一行有两个整数C(1 <= C <= 1000)和N(1 <= N <= 100),C代表总共能够报销的额度,N>代表能点菜的数目。输出只包括一行,这一行只包含一个整数,表示在报销额度范围内,所点的菜得到的最大评价分数。

2025-05-21 14:41:46 242

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 F: 放苹果

即if(n>m) f(m,n) = f(m,m)2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即f(m,n) = f(m-n,n).1<=M,N<=10。第二条m会逐渐减少,因为n>m时,我们会return f(m,m) 所以终会到达出口m==0.。而总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)1、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1);设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论,

2025-05-21 14:40:00 167

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 E: 最大子矩阵

再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)测试数据可能有多组,对于每组测试数据,输出最大子矩阵的大小。已知矩阵中整数的范围都在[-127, 127]比如,如下4 * 4的矩阵。这个子矩阵的大小是15。

2025-05-21 12:04:25 491

原创 leetcode 3356. 零数组变换 II 中等

如果在按顺序处理所有查询后,可以将。是指所有元素都等于 0 的数组。

2025-05-21 09:25:05 289

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 D: Coincidence

【代码】《算法笔记》11.8小节——动态规划专题->总结 问题 D: Coincidence。

2025-05-20 14:49:03 262

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 C: 合唱队形

K,他们的身高分别为T1, T2, …第一行有n个整数,用空格分隔,第i个整数Ti(130 <= Ti <= 230)是第i位同学的身高(厘米)。N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入的第一行是一个整数N(2 <= N <= 100),表示同学的总数。输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。

2025-05-20 14:34:01 191

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 B: 拦截导弹

但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。每组输入有两行,第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。

2025-05-20 14:31:10 280

原创 《算法笔记》11.8小节——动态规划专题->总结 问题 A: 第二题

一个数组中有若干正整数,将此数组划分为两个子数组,使得两个子数组各元素之和a,b的差最小,对于非法输入应该输出ERROR。降序输出两个子数组的元素和。

2025-05-20 14:28:50 265

原创 《算法笔记》11.7小节——动态规划专题->背包问题 问题 C: 货币系统

举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。(1<= N<=10,000)输入包含多组测试数据。

2025-05-20 13:57:08 368

原创 《算法笔记》11.7小节——动态规划专题->背包问题 问题 B: 采药

医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。【输入 】第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。【输出】一个整数,表示在规定的时间内,可以采到的草药的最大总价值。对于全部的数据,M <= 100。

2025-05-20 13:52:04 165

原创 《算法笔记》11.7小节——动态规划专题->背包问题 问题 A: 装箱问题

有一个箱子的容量为V(V为正整数,且满足0≤V≤20000),同时有n件物品(0的体积值为正整数。1行整数,第1个数表示箱子的容量,第2个数表示有n件物品,后面n个数分别表示这n件。要求从n件物品中,选取若干装入箱内,使箱子的剩余空间最小。1个整数,表示箱子剩余空间。

2025-05-20 13:50:30 173

原创 《算法笔记》11.6小节——动态规划专题->DAG最长路 问题 A: 矩形嵌套

有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)随后的n行,每行有两个数a,b(0<a,b<100),表示矩形的长和宽。

2025-05-20 13:48:35 165

原创 《算法笔记》11.5小节——动态规划专题->最长回文子串 问题 A: 【字符串】最长回文子串

由于在求max值时,不知道s[i]和s[j]在原串buf中的位置。因此,必须增加一个数组p,用p[i]保存s[i]在buf中的位置。在预处理得到,然后在更新max的同时把p[i]和p[j]保存到x和y,最后输出buf[x]到buf[y]中的所有字符。“当前最大值”变量max,它保存的是目前为止发现的最长回文子串的长度。如果串s的第i个字符到第j个字符(记为s[i..j])是回文串,则检查长度j-i+1是否超过max。s[k]的“对称”位置是s[i+j-k],因为只要一次比较失败,就应把标记变量ok置为0。

2025-05-20 13:45:35 311

原创 《算法笔记》11.4小节——动态规划专题->最长公共子序列(LCS) 问题 A: 最长公共子序列

例如:Z=<a,b,f,c>是序列X=<a,b,c,f,b,c>的一个子序列,Z中的元素在X中的下标序列为<1,2,4,6>。给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列。输入包含多组测试数据。每组输入占一行,为两个字符串,由若干个空格分隔。每个字符串的长度不超过100。现给你两个序列X和Y,请问它们的最长公共子序列的长度是多少?对于每组输入,输出两个字符串的最长公共子序列的长度。

2025-05-20 13:38:34 266

原创 《算法笔记》11.3小节——动态规划专题->最长不下降子序列(LIS)问题 A: 最长上升子序列

一个数列ai如果满足条件a1a2< ... <aN,那么它是一个有序的上升数列。我们取数列(a1a2, ...,aN)的任一子序列(ai1ai2, ...,aiK)使得1 <=i1i2< ... <iK<=N。例如,数列(1, 7, 3, 5, 9, 4, 8)的有序上升子序列,像(1, 7), (3, 4, 8)和许多其他的子序列。在所有的子序列中,最长的上升子序列的长度是4,如(1, 3, 5, 8)。

2025-05-20 13:34:38 102

原创 《算法笔记》11.2小节——动态规划专题->最大连续子序列和 问题 A: 最大连续子序列

最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。记第i个元素为a[i],定义dp[i]表示以下标i结尾的区间的最大和,那么dp[i]的计算有2种选择,一种是含有a[i-1],一种是不含有a[i-1],前者的最大值为dp[i-1]+a[i],后者的最大值为a[i]。对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元素,中间用空格分隔。

2025-05-20 13:26:53 189

原创 《算法笔记》11.1小节——动态规划专题->动态规划的递归写法和递推写法 问题 A: Fibonacci

【代码】《算法笔记》11.1小节——动态规划专题->动态规划的递归写法和递推写法 问题 A: Fibonacci。

2025-05-20 13:18:48 261

原创 leetcode 3355. 零数组变换 I 中等

如果在按顺序处理所有查询后,可以将。是指所有元素都等于 0 的数组。

2025-05-20 09:47:51 194

原创 leetcode 2901. 最长相邻不相等子序列 II 中等

所以答案为 [words[0],words[1],words[2],words[3]] = ["a","b","c","d"]。- words[0].length == words[2].length 且它们之间的汉明距离为 1。所以另一个可行的答案是 [words[0],words[1]] = ["bab","dab"]。所以一个可行的答案是 [words[0],words[2]] = ["bab","cab"]。另一个可行的子序列是 [0,1]。一个可行的子序列是 [0,2]。

2025-05-16 10:02:54 462

原创 leetcode 2900. 最长相邻不相等子序列 I 简单

所以一个可行的答案是 [words[0],words[1],words[2]] = ["a","b","c"]。得到答案为 [words[0],words[1],words[3]] = ["a","b","d"]。另一个可行的子序列是 [1,2] ,因为 groups[1]!一个可行的子序列是 [0,2] ,因为 groups[0]!所以一个可行的答案是 [words[0],words[2]] = ["e","b"]。得到答案为 [words[1],words[2]] = ["a","b"]。

2025-05-16 10:01:14 402

原创 《算法笔记》10.7小节——图算法专题->关键路径 问题 A: 关键路径

图的连接边上的数据表示其权值,带权值的图称作网。网的源点是入度为0的顶点,汇点是出度为0的顶点。网的关键路径是指从源点到汇点的所有路径中,具有最大路径长度的路径。本题的要求是根据给出的网的邻接矩阵求该网的关键路径及其长度。

2025-05-13 09:03:11 220

原创 leetcode 3335. 字符串转换后的长度 I

由于答案可能非常大,返回其对。需要根据以下规则替换字符串。次转换后得到的字符串的。

2025-05-13 08:53:25 175

原创 leetcode 1143. 最长公共子序列 中等

是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。最长公共子序列是 "ace" ,它的长度为 3。最长公共子序列是 "abc" ,它的长度为 3。两个字符串没有公共子序列,返回 0。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。

2025-05-12 16:37:08 358

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除