AC 数组、字符串、链表与模拟
文章平均质量分 51
AcWing、洛谷、CodeForces 数组、字符串、链表与模拟
记录算法题解
算法与数学
展开
-
【ACWing】3228. 俄罗斯方块
个小方块组成的板块从方格图的上方落下,玩家可以操作板块左右移动放到合适的位置,当板块中某一个方块的下边缘与方格图上的方块上边缘重合或者达到下边界时,板块不再移动,如果此时方格图的某一行全放满了方块,则该行被消除并得分。具体的,给定一个初始的方格图,以及一个板块的形状和它下落的初始位置,你要给出最终的方格图。之间的整数,表示板块图案最左边开始的时候是在方格图的哪一列中。,则它的左边和实际所表示的板块的左边是不一致的(见样例)。个方块是四连通的,即给定的板块是俄罗斯方块的标准板块)。,则表示初始的时候有方块。原创 2024-08-28 00:57:31 · 1075 阅读 · 0 评论 -
【ACWing】4398. 查询字符串
观察到每个字符串都很短,可以直接用两个哈希表,一个存每个子串出现在多少个原串里,另一个存每个子串存在于哪个原串里。如果这样的字符串不唯一,则输出任意合理字符串均可,如果这样的字符串不存在,则输出。这些字符串两两不同。作为子串的字符串的数量。作为子串的字符串的数量。都只包含小写字母、数字以及。个字符串中,任选一个包含。作为子串的字符串输出。个字符串中任选一个包含。作为子串的字符串输出。次询问给定一个字符串。原创 2024-06-23 12:45:41 · 996 阅读 · 0 评论 -
【ACWing】4782. 第k个数
请你计算并输出该数列从大到小排序后的第。一个整数,表示数列从大到小排序后的第。原创 2024-06-23 02:16:56 · 930 阅读 · 0 评论 -
【ACWing】3638. 排序
个数进行排序,要求先按奇偶后按从小到大的顺序排序。直接用快速排序即可。输出排序之后的结果。原创 2024-06-23 02:05:37 · 634 阅读 · 0 评论 -
【ACWing】782. 避嫌抢劫
家银行(位置以数轴的坐标表示,金额表示可以被抢走的金额)。两个绑匪试图分别抢劫一个银行,为了让警方多奔波他们商定选择的两个银行距离不小于。双指针,枚举第二个位置,再穷举符合条件的第一个位置。在枚举第一个位置的时候可以从左向右枚举,并且不需要回退。请问,符合约定的情况下他们能抢到的总金额最大是多少。注意:数据中保证至少存在两个银行之间的距离不小于。小镇沿街分布(可以理解为都在数轴上),有。,分别表示银行的数量和约定的距离。输出一个数字表示可以获得的最大金额。,分别表示坐标和金额。行,每行包含两个整数。原创 2024-06-18 00:42:23 · 703 阅读 · 0 评论 -
【ACWing】5050. 排序
的顺序,对字符串内的字符进行重新排序,并输出重新排序后的字符串。每组数据输出占一行,输出重新排序后的字符串。的由小写字母构成的字符串。个,所以可以用计数排序。的由小写字母构成的字符串。每组数据第一行包含整数。第二行包含一个长度为。原创 2024-06-17 23:48:06 · 770 阅读 · 0 评论 -
【ACWing】65. 数组中的逆序对
在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。原创 2024-06-17 23:37:07 · 319 阅读 · 0 评论 -
【ACWing】3724. 街灯
当然,街道某处可能被多个灯照亮。所有灯位于不同的位置。问题在于有可能这些灯没法照亮整条街道。你的任务是,确定最少还要加多少灯,使得整条街道都被照亮。,可以用差分数组加速,最后得到每个位置有多少盏灯在照明。个位置,那么需要多少盏灯做一下除法即可。组成的片段,每个片段都至少需要一个灯,每个灯能照明。一个灯照明一个区间,相当于在这个区间上加。每组数据输出一行,一个整数,表示答案。个升序的整数,表示每个灯的位置。每组数据第一行包含三个整数。个位置的灯,可以照亮第。输入包含多组测试数据。现在是基督降临节,有。原创 2024-06-17 12:19:30 · 308 阅读 · 0 评论 -
【ACWing】4862. 浇花
某公司养有观赏花,这些花十分娇贵,每天都需要且仅需要浇水一次。如果某一天没给花浇水或者给花浇水超过一次,花就会在那一天死亡。给定领导的具体安排,请你判断,花能否活过整个假期,如果不能,请你输出它是在第几天死的,以及那一天的具体浇水次数。天每天来公司浇一次花。领导是按照时间顺序安排的浇花任务,保证了对于。为了让花能够活过整个假期,公司领导安排了。如果花不能活过整个假期,则输出两个整数。,于是可以用差分来做。如果花能活过整个假期,则输出。天死的,这一天花被浇了。)来公司浇花,其中第。行,每行包含两个整数。原创 2024-06-17 08:49:49 · 824 阅读 · 0 评论 -
【ACWing】1230. K倍区间
每次读入一个数就计算一下当前得到的前缀和对。的个数,答案累加这个个数即可。你能求出数列中总共有多少个。,然后询问之前出现过的前缀和中对。,如果其中一段连续的子序列。的倍数,我们就称这个区间。原创 2024-06-17 08:31:29 · 140 阅读 · 0 评论 -
【ACWing】3723. 字符串查询
可以用前缀和来处理区间里每个字母出现的次数,询问的时候比较每个字母出现次数是否相等即可。你需要回答,是否能够重新排列单词。每次询问,你会得到正整数。每次询问,如果能,输出。,仅由小写字母组成。,每组询问时间复杂度。原创 2024-06-17 08:20:07 · 782 阅读 · 0 评论 -
【ACWing】3389. N 的阶乘
每个数的阶乘,如果缓存里有则直接读取,否则计算。计算的时候可以利用压位的技巧,比如。里一个位置存四位数,这样使得空间利用率高一些。每组数据占一行,包含一个整数。每组数据输出占一行,输出。输入包含多组测试数据。高精度乘法,每次计算。原创 2024-06-17 06:32:14 · 747 阅读 · 0 评论 -
【ACWing】3374. 进制转换2
的每一位变成十进制然后存进一个int数组里,即求出。进制表示,再输出出来即可。不停的取余,取余的结果的逆序即为其。在输入中,当某一位数字的值大于。(十进制下)时,我们用大写字母。在输出中,当某一位数字的值大于。(十进制下)时,我们用小写字母。,分别表示(十进制下的)数值。,分别表示(十进制下的)数值。进制的数,现在要求你将。原创 2024-06-17 01:28:57 · 299 阅读 · 0 评论 -
【ACWing】3482. 大数运算
注意分类讨论负数的情况。,请你依次计算并输出。原创 2024-06-16 17:36:42 · 857 阅读 · 0 评论 -
【ACWing】3448. 基本算术
孩子们在学习多位数加法运算。计算时,相同数位要对齐,从个位加起,哪一位上的数相加满十,就向上一位进一。许多孩子表示,“进位”操作十分困难,是个不小的挑战。现在,给定你一些多位数加法运算的问题,请你统计每个问题在计算过程中需要用到多少次“进位”操作。每组数据输出一个结果,用来描述进位的次数。每组数据占一行,包含两个无符号整数。输入包含多组测试数据。原创 2024-06-16 16:41:59 · 198 阅读 · 0 评论 -
【ACWing】3596. a+b
每组数据占一行,包含两个正整数。实现一个加法器,使其能够输出。每组数据输出一行答案,表示。输入包含多组测试数据。原创 2024-06-16 16:32:42 · 254 阅读 · 0 评论 -
【ACWing】3453. 整数查询
给定若干个可能很大的正整数,请你计算它们相加的和。个正整数,每个数的长度不超过。原创 2024-06-16 16:20:02 · 492 阅读 · 0 评论 -
【ACWing】113. 特殊排序
每一对元素之间的大小关系是确定的,关系具有反对称性,但不具有传递性。注意:不存在两个元素大小相等的情况。也就是说,元素的大小关系是。条有向边构成的任意有向图。然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过。个元素排成一行,使得每个元素都小于右边与它相邻的元素。个元素排好序后,把他们的编号以数组的形式输出,如果答案不唯一,则输出任意一个均可。次提问来获取信息,每次提问只能了解某两个元素之间的关系。来获得两个元素之间的大小关系。归并排序的比较次数是小于。的两个元素,如果元素。原创 2024-01-29 17:08:50 · 953 阅读 · 0 评论 -
【ACWing】102. 最佳牛围栏
约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。在给定条件下,计算围起区域内每块地包含的牛的数量的平均值可能的最大值是多少。最后返回答案的时候要返回范围区间的右端点,因为求的是向下取整的结果。块田地组成,每块地里都有一定数量的牛,其数量不会少于。输出一个整数,表示平均值的最大值乘以。,在判断的时候可以遍历的时候维护。再向下取整之后得到的结果。行,每行输入一个整数,第。片区域内包含的牛的数目。后,其实就是问是否存在。,数据间用空格隔开。原创 2024-01-29 10:52:56 · 959 阅读 · 0 评论 -
【ACWing】107. 超快速排序
在这个问题中,您必须分析特定的排序算法----超快速排序。您的任务是确定超快速排序需要执行多少交换操作才能对给定的输入序列进行排序。,代表对给定输入序列进行排序所需的最小交换操作数,每个整数占一行。答案就是逆序对的数量,求逆序对数量可以用归并排序。个不同整数的序列,直到序列按升序排序。对于每个需要处理的输入序列,输出一个整数。,代表用例中输入序列的具体数据,第。当输入用例中包含的输入序列长度为。,代表该用例中输入序列的长度。时,输入终止,该序列无需处理。每个测试用例的第一行输入整数。行的数据代表序列中第。原创 2024-01-28 11:32:20 · 912 阅读 · 0 评论 -
【ACWing】103. 电影
部电影正在上映,每部电影的语音和字幕都采用不同的语言。对于观影的科学家来说,如果能听懂电影的语音,他就会很开心;请你帮忙选择一部电影,可以让观影很开心的人最多。如果有多部电影满足条件,则在这些电影中挑选观影比较开心的人最多的那一部。在会议结束后,所有的科学家决定一起去看场电影放松一下。先统计每个语言有多少个科学家懂,然后遍历电影找到最优的那个即可。输出一个整数,代表最终选择的电影的编号。部电影的语音采用的语言的编号。部电影的字幕采用的语言的编号。个科学家懂得的语言的编号。,代表科学家的数量。原创 2024-01-28 10:25:47 · 829 阅读 · 0 评论 -
【ACWing】109. 天才ACM(配数学证明)
然而我们每次是新加了一些数,前面已经加的数已经排好序了,从而用归并排序更加节省时间。,无论怎样,都可以暴力验证将这四个数按照定理中的配对方式能得到更大的和,这就矛盾了。对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值就称为集合。,截取出这样的一段之后,再在剩余的数里继续进行这个操作(由于如果集合。这一段的校验值是否满足条件,如果满足,则延伸右端点并倍增步长,令。的校验值,所以每次取的时候要尽可能的多取数,那样更优)。开始的最长的一段,使得那一段的校验值小于等于。,对于任意一个整数集合。原创 2024-01-21 12:35:59 · 1021 阅读 · 0 评论 -
【洛谷】P1801 黑匣子
可以维护两个堆,一个大顶堆一个小顶堆,这两个堆存插入的值,并且要维护小顶堆的数都大于等于大顶堆的数,这样查询的时候直接查大顶堆的堆顶即可。Black Box是一种原始的数据库。它可以储存一个整数数组,还有一个特别的变量。输出Black Box根据命令串所得出的输出串,一个数字一行。这个Black Box要处理一串命令。最开始的时候Black Box是空的.而。我们来演示一下一个有。原创 2023-10-10 05:53:11 · 155 阅读 · 0 评论 -
【ACWing】1532. 找硬币
有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。枚举第二个硬币,开一个哈希表存一下已经遍历的所有面值。,分别表示硬币数量以及需要支付的金额。,表示所选的两个硬币的面额,使得。,如果存在,则说明有解,那么用。个整数,表示每个硬币的面额。输出一行,包含两个整数。如果答案不唯一,则输出。,则在哈希表里查一下。原创 2023-10-09 13:03:09 · 41 阅读 · 0 评论 -
【ACWing】1236. 递增三元组
小的数有多少个,可以通过对计数数组求前缀和来做。也可以类似操作,求计数数组然后求后缀和。中出现了多少次),然后对。请你统计有多少个三元组。原创 2023-10-09 12:40:58 · 38 阅读 · 0 评论 -
【ACWing】446. 统计单词数
一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。输出只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开, 分别是单词在文章中出现的次数和第一次出现的位置。(即在文章中第一次出现时,单词首字母在文章中的位置,位置从。注意:匹配单词时,不区分大小写,但要求完全匹配, 即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同, 如果给定单词仅是文章中某一单词的一部分则不算匹配。的单词会直接略过,空间。原创 2023-10-09 12:03:35 · 34 阅读 · 0 评论 -
【ACWing】1054. 股票买卖
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。最大利润是所有当前价和其之前最小价的差的最大值。输出一个整数,表示最大利润。个数字表示一个给定股票在第。的正整数,表示完整的数组。原创 2023-10-08 08:24:16 · 38 阅读 · 0 评论 -
【ACWing】4789. 前缀和序列
如果将该序列从小到大排序,则可以得到另一个长度为。行,每行包含一个询问,格式如题面描述。行,每个询问输出一行答案。原创 2023-10-08 08:07:57 · 54 阅读 · 0 评论 -
【洛谷】P1351 联合权值
都要算进去),所以我们只需要对每个中转点,求其所有邻居的权值的和以及平方和,套公式算一下联合权值之和,然后再求个总和即可。个邻居,则存在以其为中转点的联合权值,最大的联合权值即为权值最大的两个邻居的乘积;上所有可产生联合权值的有序点对中,联合权值最大的是多少?上联合权值的最大值和所有联合权值之和。由于所有联合权值之和可能很大,输出它时要对。个正整数,每两个正整数之间用一个空格隔开,其中第。保证一定存在可产生联合权值的有序点对。个整数,之间用一个空格隔开,依次为图。枚举中转点,对于每个中转点,有。原创 2023-09-09 23:30:32 · 83 阅读 · 0 评论 -
【CodeForces】CF1385D a-Good String
,问最少替换多少个字符,使其为一个。现在,给你一个字符串。原创 2023-08-27 12:59:35 · 134 阅读 · 0 评论 -
【ACWing】3639. 链表合并
给定两个元素有序(从小到大)的链表,要求将两个链表合并成一个有序(从小到大)链表。输出合并之后的链表结果,两两之间用空格隔开。第一行输入第一个链表的结点数。个整数,两两之间用空格隔开。第三行输入第二个链表的结点数。个整数,两两之间用空格隔开。原创 2023-08-27 02:12:57 · 46 阅读 · 0 评论 -
【ACWing】465. 买铅笔
种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过。接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价格。现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少。支铅笔作为小朋友们参加 NOIP 的礼物。输出一行一个整数,表示P老师最少需要花费的钱。支铅笔最少需要花费多少钱。,表示需要的铅笔数量。原创 2023-08-26 14:52:32 · 73 阅读 · 0 评论 -
【ACWing】4188. 连接字符串(配数学证明)
它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。补充最少的若干字符使得其变成可以由某个串重复若干次得到(假设我们已经知道了答案),假设是补充了。恰好就是某个字符串重复若干次得到的,那么结论成立(参考。,第二行给出一个字符串,全由小写字母组成。个字符,那么对于新的字符串,第一行给出字符串的长度。我们可以证明答案就是。(这可以由KMP算法求。数组的过程来证明)。原创 2023-06-17 13:26:00 · 62 阅读 · 0 评论 -
【洛谷】P1591 阶乘数码
的每个数的阶乘,应答询问的时候只需要找到对应的数遍历每个数字即可。先用高精度乘以单精度的方式预处理出。对于每组数据,输出一个整数,表示。中某个数码出现的次数。原创 2023-04-17 01:41:09 · 575 阅读 · 0 评论 -
【洛谷】P1932 A+B A-B A*B A/B A%B Problem
对于高精度加法和减法,高精度加法我们可以只实现同号的情形,不同号的情形都可以化为两个非负数相减,这可以放在高精度减法里实现。由于是高精度的大整数计算,我们可以采用压位的方式节省空间和时间。存储数字的时候,符号位另外存,其余每。个位存进一个数组的项中,并且按照从低位到高位的顺序存储。的多少个数字需要考虑)。这样输出的时候,最高位原样输出,剩余位高位补。高精度乘法就直接按照一元多项式乘法的方法做即可。,不断重复上面的操作。位输出(当然输出要逆序)。的二进制最高位,接着我们将。的时候,商就算出来了,此时。原创 2023-04-14 13:24:43 · 330 阅读 · 0 评论 -
【洛谷】P1480 A/B Problem
两行,第一行是被除数,第二行是除数。一行,商的整数部分。原创 2023-04-04 02:24:28 · 232 阅读 · 0 评论 -
【洛谷】P1604 B进制星球
乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用。星球上的人们用美味的食物招待了小。高精度加法直接模拟即可。进制加法的计算器给他们。行:一个十进制的整数,表示进制。进制数,表示输入的两个数的和。希望你可以帮助他,编写实现。分别表示两个数的位数。原创 2023-04-02 02:21:33 · 231 阅读 · 0 评论 -
【ACWing】3627. 最大差值
请问,在操作全部完成后,序列中的最大值和最小值之差是多少。例如,如果初始序列为。每组数据输出一行,一个整数,表示可以得到的最大差值。,则无法进行任何操作,所以最大值和最小值之差也为。个数之和,而这两者是可以同时取到的。再例如,如果序列中的所有元素都为。次操作,一定可以让最小值变为。,这样最大值和最小值之差为。你可以对该序列进行最多。要求最大差值,首先,经过。每组数据第一行包含整数。,而最大值最多可以变为。,则一种最优方案是将。原创 2022-09-13 09:42:25 · 195 阅读 · 0 评论 -
【ACWing】790. 数的三次方根
题目地址:https://www.acwing.com/problem/content/792/给定一个浮点数nnn,求其三次方根。保留666位小数。浮点数二分。代码如下:#include<iostream>using namespace std;const double eps = 1e-7;int main() { double n; cin >> n; double l = -50, r = 50; while (l + ep原创 2021-02-12 01:07:15 · 555 阅读 · 0 评论 -
【ACWing】789. 数的范围
题目地址:https://www.acwing.com/problem/content/791/给定一个长nnn的升序数组AAA,以及qqq个查询,每次查询问某个整数kkk在AAA中出现的起始位置和终止位置。如果不存在则输出−1−1-1 -1−1−1。下标从000开始。数据范围:1≤n≤1000001\le n\le 1000001≤n≤1000001≤q≤100001\le q\le 100001≤q≤100001≤k≤100001\le k\le 100001≤k≤10000对于每次询问,原创 2021-02-12 00:57:43 · 330 阅读 · 0 评论