
AcWing
文章平均质量分 55
王翊珩
Talk is cheap. Show me the code.
展开
-
AcWing 843. n-皇后问题——算法基础课题解
𝑛−皇后问题是指将 𝑛 个皇后放在 𝑛×𝑛 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。每个解决方案占 𝑛 行,每行输出一个长度为 𝑛 的字符串,用来表示完整的棋盘状态。主对角线是从左上到右下的对角线。对于一个棋盘上的位置。现在给定整数 𝑛,请你输出所有的满足条件的棋子摆法。例如,对于一个 8x8 的棋盘,位置。表示某一个位置的方格上摆着皇后。,在主对角线上使用的索引是。,在副对角线上使用的索引是。,在主对角线上,所有位置。,在副对角线上,所有位置。原创 2024-06-06 18:50:06 · 668 阅读 · 0 评论 -
AcWing 842. 排列数字——算法基础课题解
的值也会恢复到进入当前层之前的状态(通过局部变量的作用域自然实现),这样就可以继续尝试其他的数字组合。变量通过位运算来跟踪哪些数字已经被使用过。给定一个整数 𝑛,将数字 1∼𝑛 排成一排,将会有很多种排列方法。完成当前分支后,递归函数将结束当前层的执行并返回上一层,同时。现在,请你按照字典序将所有的排列方法输出。按字典序输出所有排列方案,每个方案占一行。假设我们要找出 1 到 3 的所有排列。我们从数字 1 开始尝试,直到数字 3。共一行,包含一个整数 𝑛。,表示数字 1 已被使用。原创 2024-06-06 10:53:13 · 587 阅读 · 0 评论 -
C++ STL简介——算法基础课
【代码】C++ STL简介——算法基础课。原创 2024-06-05 18:53:09 · 171 阅读 · 0 评论 -
AcWing 841. 字符串哈希——算法基础课题解
给定一个长度为 𝑛 的字符串,再给定 𝑚 个询问,每个询问包含四个整数 𝑙1,𝑟1,𝑙2,𝑟2,请你判断[𝑙1,𝑟1] 和[𝑙2,𝑟2] 这两个区间所包含的字符串子串是否完全相同。接下来 𝑚 行,每行包含四个整数 𝑙1,𝑟1,𝑙2,𝑟2,表示一次询问所涉及的两个区间。第二行包含一个长度为 𝑛 的字符串,字符串中只包含大小写英文字母和数字。对于每个询问输出一个结果,如果两个字符串子串完全相同则输出。第一行包含整数 𝑛 和 𝑚,表示字符串长度和询问次数。注意,字符串的位置从 1 开始编号。原创 2024-06-05 18:43:19 · 582 阅读 · 0 评论 -
AcWing 840. 模拟散列表——算法基础课题解
选取 N 的时候一般为大于数据总个数的 2~3 倍的第一个质数。现在要进行 𝑁 次操作,对于每个询问操作输出对应的结果。,输出一个询问结果,如果 𝑥 在集合中出现过,则输出。接下来 𝑁 行,每行包含一个操作指令,操作指令为。:N 一般为大于数据总个数的第一个质数。第一行包含整数 𝑁,表示操作数量。原创 2024-06-05 16:59:18 · 349 阅读 · 0 评论 -
AcWing 839. 模拟堆——算法基础课题解
现在要进行 𝑁 次操作,对于所有第 2 个操作,输出当前集合的最小值。接下来 𝑁 行,每行包含一个操作指令,操作指令为。,输出一个结果,表示当前集合中的最小值。第一行包含整数 𝑁。原创 2024-05-31 18:48:23 · 599 阅读 · 0 评论 -
AcWing 838. 堆排序——算法基础课题解
输入一个长度为 𝑛 的整数数列,从小到大输出前 𝑚 小的数。共一行,包含 𝑚 个整数,表示整数数列中前 𝑚 小的数。第二行包含 𝑛 个整数,表示整数数列。第一行包含整数 𝑛 和 𝑚。1≤数列中元素≤10^9。原创 2024-05-31 16:05:03 · 395 阅读 · 0 评论 -
AcWing 240. 食物链——算法基础课题解
此人对 𝑁 个动物,用上述两种说法,一句接一句地说出 𝐾 句话,这 𝐾 句话有的是真的,有的是假的。以下 K𝐾 行每行是三个正整数 𝐷,𝑋,𝑌,两数之间用一个空格隔开,其中 𝐷 表示说法的种类。动物王国中有三类动物 𝐴,𝐵,𝐶,这三类动物的食物链构成了有趣的环形。每个动物都是 𝐴,𝐵,𝐶 中的一种,但是我们并不知道它到底是哪一种。你的任务是根据给定的 𝑁 和 𝐾 句话,输出假话的总数。若 𝐷=1,则表示 𝑋 和 𝑌 是同类。𝐴 吃 𝐵,𝐵 吃 𝐶,𝐶 吃 𝐴。,表示 𝑋 和 𝑌 是同类。原创 2024-05-30 15:07:26 · 607 阅读 · 0 评论 -
AcWing 837. 连通块中点的数量——算法基础课题解
给定一个包含 𝑛 个点(编号为 1∼𝑛)的无向图,初始时图中没有边。接下来 𝑚 行,每行包含一个操作指令,指令为。,如果 𝑎 和 𝑏 在同一个连通块中,则输出。,输出一个整数表示点 𝑎 所在连通块中点的数量。第一行输入整数 𝑛 和 𝑚。原创 2024-05-30 11:06:39 · 611 阅读 · 0 评论 -
AcWing 836. 合并集合——算法基础课题解
一共有 𝑛 个数,编号是 1∼𝑛,最开始每个数各自在一个集合中。,都要输出一个结果,如果 𝑎 和 𝑏 在同一集合内,则输出。接下来 𝑚 行,每行包含一个操作指令,指令为。第一行输入整数 𝑛 和 𝑚。原创 2024-05-29 15:53:26 · 381 阅读 · 0 评论 -
AcWing 143. 最大异或对——算法基础课题解
在给定的 𝑁 个整数 𝐴1,𝐴2……𝐴𝑁 中选出两个进行 𝑥𝑜𝑟(异或)运算,得到的结果最大是多少。第二行输入 𝑁 个整数 𝐴1~𝐴𝑁。第一行输入一个整数 𝑁。输出一个整数表示答案。原创 2024-05-29 10:50:41 · 298 阅读 · 0 评论 -
AcWing 835. Trie字符串统计——算法基础课题解
共有 𝑁 个操作,所有输入的字符串总长度不超过 10^5,字符串仅包含小写英文字母。,都要输出一个整数作为结果,表示 𝑥 在集合中出现的次数。接下来 𝑁 行,每行包含一个操作指令,指令为。第一行包含整数 𝑁,表示操作数。原创 2024-05-28 16:55:51 · 455 阅读 · 0 评论 -
AcWing 831. KMP字符串——算法基础课题解
它的主要目的是在模式匹配过程中,当遇到字符不匹配的情况时,提供一种快速跳转的方法,从而避免重复比较已经匹配过的字符。给定一个字符串 𝑆,以及一个模式串 𝑃,所有字符串中只包含大小写英文字母以及阿拉伯数字。共一行,输出所有出现位置的起始下标(下标从 0 开始计数),整数之间用空格隔开。当我们在文本中匹配模式串时,如果在某个位置字符不匹配,可以使用。数组跳转到上一个可能的匹配位置,避免重新比较已经匹配的部分。原创 2024-05-23 15:54:39 · 507 阅读 · 2 评论 -
AcWing 154. 滑动窗口——算法基础课题解
第一行包含两个整数 𝑛 和 𝑘,分别代表数组长度和滑动窗口的长度。你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。有一个大小为 𝑘 的滑动窗口,它从数组的最左边移动到最右边。第一行输出,从左至右,每个位置滑动窗口中的最小值。第二行输出,从左至右,每个位置滑动窗口中的最大值。第二行有 𝑛 个整数,代表数组的具体数值。给定一个大小为 n≤10^6 的数组。你只能在窗口中看到 𝑘 个数字。每次滑动窗口向右移动一个位置。同行数据之间用空格隔开。原创 2024-05-22 10:57:57 · 570 阅读 · 0 评论 -
AcWing 830. 单调栈——算法基础课题解
共一行,包含 𝑁 个整数,其中第 𝑖 个数表示第 𝑖 个数的左边第一个比它小的数,如果不存在则输出 −1。给定一个长度为 𝑁 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。第二行包含 𝑁 个整数,表示整数数列。第一行包含整数 𝑁,表示数列长度。1≤数列中元素≤10^9。原创 2024-05-21 10:19:33 · 426 阅读 · 0 评论 -
AcWing 829. 模拟队列——算法基础课题解
现在要对队列进行 𝑀 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。第一行包含整数 𝑀,表示操作次数。接下来 𝑀 行,每行包含一个操作命令,操作命令为push xpopemptyquery中的一种。对于每个empty和query操作都要输出一个查询结果,每个结果占一行。其中,empty操作的查询结果为YES或NOquery操作的查询结果为一个整数,表示队头元素的值。1≤𝑥≤10^9,所有操作保证合法。NO 6 YES 4。原创 2024-05-20 16:49:48 · 290 阅读 · 0 评论 -
AcWing 3302. 表达式求值——算法基础课题解
给定一个表达式,其中运算符仅包含+,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。-1+2//eval()共一行,为给定表达式。共一行,为表达式的结果。表达式的长度不超过 10^5。8。原创 2024-05-16 09:06:09 · 372 阅读 · 0 评论 -
AcWing 828. 模拟栈——算法基础课题解
现在要对栈进行 𝑀 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。第一行包含整数 𝑀,表示操作次数。接下来 𝑀 行,每行包含一个操作命令,操作命令为push xpopemptyquery中的一种。对于每个empty和query操作都要输出一个查询结果,每个结果占一行。其中,empty操作的查询结果为YES或NOquery操作的查询结果为一个整数,表示栈顶元素的值。1≤𝑥≤10^9,所有操作保证合法。原创 2024-05-15 09:52:11 · 385 阅读 · 0 评论 -
AcWing 827. 双链表——算法基础课题解
题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,……第 n 个插入的数。现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。第一行包含整数 M,表示操作次数。共一行,将整个链表从左到右输出。原创 2024-05-06 17:10:32 · 331 阅读 · 0 评论 -
AcWing 826. 单链表——算法基础课题解
题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,……第 n 个插入的数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。第一行包含整数 M,表示操作次数。共一行,将整个链表从头到尾输出。原创 2024-04-26 19:33:54 · 321 阅读 · 0 评论 -
AcWing 803. 区间合并——算法基础课题解
例如:[1,3]和 [2,6] 可以合并为一个区间[1,6]。给定 n 个区间 [li,ri],要求合并所有有交集的区间。共一行,包含一个整数,表示合并区间完成后的区间个数。接下来 n 行,每行包含两个整数 l 和 r。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。第一行包含整数 n。原创 2024-04-24 10:11:24 · 456 阅读 · 0 评论 -
AcWing 802. 区间和——算法基础课题解
接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。共 m 行,每行输出一个询问中所求的区间内数字和。再接下来 m 行,每行包含两个整数 l 和 r。接下来 n 行,每行包含两个整数 x 和 c。第一行包含两个整数 n 和 m。原创 2024-04-23 18:12:51 · 292 阅读 · 0 评论 -
AcWing 801. 二进制中1的个数——算法基础课题解
共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。这种计算方式是基于二进制补码的原理,它是计算机内部表示和处理负数的一种方式。进行按位与操作,结果都等于这个数的最低位。的二进制补码来计算的。的二进制补码,它的计算方式是先对。减去它的二进制表示中最低位的。的二进制表示取反,然后加。的二进制表示中的最低位的。的二进制表示中的最低位的。的二进制表示中最低位的。的二进制表示中最低位的。原创 2024-04-22 10:06:41 · 811 阅读 · 0 评论 -
AcWing 2816. 判断子序列——算法基础课题解
给定一个长度为 n 的整数序列 a1,a2,……,an 以及一个长度为 m 的整数序列 b1,b2,……而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5}的一个子序列。第二行包含 n 个整数,表示 a1,a2,……第三行包含 m 个整数,表示 b1,b2,……如果 a 序列是 b 序列的子序列,输出一行。请你判断 a 序列是否为 b 序列的子序列。第一行包含两个整数 n,m。子序列指序列的一部分项按。原创 2024-04-21 17:01:44 · 306 阅读 · 0 评论 -
AcWing 800. 数组元素的目标和——算法基础课题解
第一行包含三个整数 n,m,x,分别表示 A 的长度,B 的长度以及目标值 x。给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。请你求出满足 A[i]+B[j]=x 的数对 (i,j)。第二行包含 n 个整数,表示数组 A。第三行包含 m 个整数,表示数组 B。共一行,包含两个整数 i 和 j。数组长度不超过 10^5。同一数组内元素各不相同。数组下标从 0 开始。1≤数组元素≤10^9。原创 2024-04-20 15:32:24 · 367 阅读 · 0 评论 -
AcWing 799. 最长连续不重复子序列——算法基础课题解
给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。第二行包含 n 个整数(均在 0∼10^5 范围内),表示整数序列。共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。第一行包含整数 n。原创 2024-04-19 16:49:20 · 393 阅读 · 0 评论 -
AcWing 798. 差分矩阵——算法基础课题解
输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。直接更新会导致每次操作的时间复杂度和该子矩阵的大小成正比,当操作次数和矩阵大小都很大时,直接更新效率低下。接下来 q 行,每行包含 5 个整数 x1,y1,x2,y2,c,表示一个操作。共 n 行,每行 m 个整数,表示所有操作进行完毕后的最终矩阵。对差分矩阵的操作最终将被应用回原矩阵以反映所有的更新。原创 2024-04-18 10:02:56 · 503 阅读 · 0 评论 -
AcWing 797. 差分——算法基础课题解
输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。请你输出进行完所有操作后的序列。第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。共一行,包含 n 个整数,表示最终序列。1≤l≤r≤n1,−1000≤整数序列中元素的值≤1000。原创 2024-04-17 10:19:15 · 579 阅读 · 0 评论 -
AcWing 796. 子矩阵的和——算法基础课题解
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。接下来 n 行,每行包含 m 个整数,表示整数矩阵。对于每个询问输出子矩阵中所有数的和。共 q 行,每行输出一个询问的结果。−1000≤矩阵内元素的值≤1000。第一行包含三个整数 n,m,q。原创 2024-04-12 10:58:25 · 536 阅读 · 0 评论 -
AcWing 795. 前缀和——算法基础课题解
输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r,。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。原创 2024-04-11 10:45:06 · 322 阅读 · 0 评论 -
AcWing 794. 高精度除法——算法基础课题解
给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。共两行,第一行包含整数 A,第二行包含整数 B。共两行,第一行输出所求的商,第二行输出所求余数。1≤A 的长度≤100000,原创 2024-04-10 19:21:56 · 468 阅读 · 0 评论 -
AcWing 793. 高精度乘法——算法基础课题解
给定两个非负整数(不含前导 00) A 和 B,请你计算 A×B 的值。将B看成一个整体再相乘,不要一位一位的乘!共两行,第一行包含整数 A,第二行包含整数 B。共一行,包含 A×B 的值。1≤A的长度≤100000,原创 2024-04-10 15:51:04 · 451 阅读 · 0 评论 -
AcWing 792. 高精度减法——算法基础课题解
给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。共两行,每行包含一个整数。共一行,包含所求的差。1≤整数长度≤10^5。原创 2024-04-09 16:45:18 · 355 阅读 · 0 评论 -
AcWing 791. 高精度加法——算法基础课题解
给定两个正整数(不含前导 0),计算它们的和。共两行,每行包含一个整数。1≤整数长度≤100000。共一行,包含所求的和。原创 2024-04-08 13:17:23 · 251 阅读 · 0 评论 -
AcWing 790. 数的三次方根——算法基础课题解
那么这个因为四舍五入第八位到第七位,已经产生误差,输出六位时候误差会积累。由此可见,想要保留出正确的六位小数,需要保证第七位是精准的,不能被进位。,那么四舍五入第九位到第八位,取前六位时候,第七位会被。,是因为题目要求保留小数点后6位,如果使用。共一行,包含一个浮点数,表示问题的解。给定一个浮点数 n,求它的三次方根。共一行,包含一个浮点数 n。注意,结果保留 6 位小数。掉,但是第七位是准确值。原创 2024-04-07 12:52:33 · 532 阅读 · 0 评论 -
AcWing 789. 数的范围——算法基础课题解
这种方式的目的是在左右边界不断逼近时,能够偏向左侧,确保不会错过最左侧的目标值。条件时,意味着每当中间元素的值大于等于目标值时,我们都将搜索范围的右边界调整为。给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。接下来 q 行,每行包含一个整数 k,表示一个询问元素。,确保搜索范围向右移动,从而能够覆盖到最右侧的目标值。时,我们会继续在右侧半区间搜索,这将错过最左侧的。时,我们希望继续探索右侧可能存在的更右侧的。原创 2024-04-06 15:51:23 · 1050 阅读 · 0 评论 -
AcWing 788. 逆序对的数量——算法基础课题解
逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 ia[j],则其为一个逆序对;给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。数列中的元素的取值范围 [1,10^9]。第二行包含 n 个整数,表示整个数列。第一行包含整数 n,表示数列的长度。输出一个整数,表示逆序对的个数。原创 2024-04-05 10:43:01 · 353 阅读 · 0 评论 -
AcWing 787. 归并排序——算法基础课题解
第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。请你使用归并排序对这个数列按照从小到大进行排序。输出共一行,包含 n 个整数,表示排好序的数列。给定你一个长度为 n 的整数数列。输入共两行,第一行包含整数 n。并将排好序的数列按顺序输出。原创 2024-04-04 17:08:26 · 249 阅读 · 0 评论 -
AcWing 786. 第k个数——算法基础课题解
给定一个长度为 n的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整数数列。输出一个整数,表示数列的第 k 小数。第一行包含两个整数 n 和 k。原创 2024-04-03 14:58:17 · 526 阅读 · 0 评论 -
AcWing 785. 快速排序——算法基础课题解
给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。输出共一行,包含 n 个整数,表示排好序的数列。原创 2024-04-03 10:33:59 · 329 阅读 · 0 评论