《算法竞赛进阶指南》
第一个专栏,坚持刷题之旅
蓝鲸
这个作者很懒,什么都没留下…
展开
-
《算法竞赛进阶指南》生日蛋糕
生日蛋糕7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。令Q = Sπ ,请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。除Q外,以上所有数据皆为正整数 。输入格式输入包含两行,第一行原创 2020-09-28 16:39:14 · 707 阅读 · 0 评论 -
《算法竞赛进阶指南》木棒
木棒乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式为每组数据,分别输出原始木棒的可能最小长度,原创 2020-09-26 17:01:34 · 273 阅读 · 0 评论 -
《算法竞赛进阶指南》数独
数独数独是一种传统益智游戏,你需要把一个9 × 9的数独补充完整,使得图中每行、每列、每个3 × 3的九宫格内数字1~9均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,代表数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1-9)或一个”.”(表示尚未填充)。您可以假设输入中的每个谜题都只有一个解决方案。文件结尾处为包含单词“end”的单行,表示输入结束。输出格式每个测试用例,输出一行数据,代表填充完全原创 2020-09-22 11:17:26 · 295 阅读 · 1 评论 -
《算法竞赛进阶指南》小猫爬山
小猫爬山翰翰和达达饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?输入格式第1行:包含两个用空格隔开的整数,N和W。第2…N+1行:每行一个整数,其中第原创 2020-09-20 16:34:25 · 458 阅读 · 0 评论 -
《算法竞赛进阶指南》可达性统计
可达性统计给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:1633211111本题我们利用的方法主要是拓扑排序,以及二进制压位。首先我们介绍拓扑排序:在已知的有向无原创 2020-09-20 15:32:39 · 572 阅读 · 0 评论 -
《算法竞赛进阶指南》生日礼物
生日礼物翰翰18岁生日的时候,达达给她看了一个神奇的序列 A1,A2,…,AN。她被允许从中选择不超过 M 个连续的部分作为自己的生日礼物。翰翰想要知道选择元素之和的最大值。你能帮助她吗?输入格式第一行包含两个整数N,M。第二行包含N个整数A1~AN。输出格式输出一个整数,表示答案。数据范围1≤N,M≤105,|Ai|≤104输入样例:5 22 -3 2 -1 2输出样例:5本题的解决方法是链表,即我们首先选择所有的正数序列作为最大值,然后在判断是否超过所要求的序列的个数原创 2020-09-18 17:56:43 · 446 阅读 · 0 评论 -
《算法竞赛进阶指南》黑盒子
黑盒子黑盒子代表一个原始的数据库。它可以用来储存整数数组,并且它拥有一个特殊变量i。在最开始,黑盒子是空的,并且i=0。现在对黑盒子进行一系列的操作处理,操作包括以下两种:1、ADD(x):表示将x加入到黑盒子中。2、GET:使i增加1,输出黑盒子中第i小的数值(即将所有数按升序排序后的第i个数)。下面给出一个具体例子:序号 操作 i 盒子内数(升序排列后) 输出的值1 ADD(3) 0 32 GET原创 2020-09-15 18:10:12 · 340 阅读 · 0 评论 -
《算法竞赛进阶指南》电话列表
给出一个电话列表,如果列表中存在其中一个号码是另一个号码的前缀这一情况,那么就称这个电话列表是不兼容的。假设电话列表如下:·Emergency 911·Alice 97 625 999·Bob 91 12 54 26在此例中,报警电话号码(911)为Bob电话号码(91 12 54 26)的前缀,所以该列表不兼容。输入格式第一行输入整数t,表示测试用例数量。对于每个测试用例,第一行输入整数n,表示电话号码数量。接下来n行,每行输入一个电话号码,号码内数字之间无空格,电话号码不超过10位。原创 2020-09-15 11:13:38 · 276 阅读 · 0 评论 -
《算法竞赛进阶指南》匹配统计
匹配统计阿轩在纸上写了两个字符串,分别记为A和B。利用在数据结构与算法课上学到的知识,他很容易地求出了“字符串A从任意位置开始的后缀子串”与“字符串B”匹配的长度。不过阿轩是一个勤学好问的同学,他向你提出了Q个问题:在每个问题中,他给定你一个整数x,请你告诉他有多少个位置,满足“字符串A从该位置开始的后缀子串”与B匹配的长度恰好为x。例如:A=aabcde,B=ab,则A有aabcde、abcde、bcde、cde、de、e这6个后缀子串,它们与B=ab的匹配长度分别是1、2、0、0、0、0。因原创 2020-09-13 22:05:08 · 346 阅读 · 0 评论 -
《算法竞赛进阶指南》奶牛矩阵
奶牛矩阵每天早上,农夫约翰的奶牛们被挤奶的时候,都会站成一个R行C列的方阵。现在在每个奶牛的身上标注表示其品种的大写字母,则所有奶牛共同构成了一个R行C列的字符矩阵。现在给定由所有奶牛构成的矩阵,求它的最小覆盖子矩阵的面积是多少。如果一个子矩阵无限复制扩张之后得到的矩阵能包含原来的矩阵,则称该子矩阵为覆盖子矩阵。输入格式第1行:输入两个用空格隔开的整数,R和C。第2…R+1行:描绘由奶牛构成的R行C列的矩阵,每行C个字符,字符之间没有空格。输出格式输出最小覆盖子矩阵的面积。(每个字符的面积原创 2020-09-12 11:24:38 · 426 阅读 · 0 评论 -
《算法竞赛进阶指南》项链
项链有一天,达达捡了一条价值连城的宝石项链,但是,一个严重的问题是,他并不知道项链的主人是谁!在得知此事后,很多人向达达发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。达达要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字0至9来标示。一个对于项链的表示就是从项链的某个宝石开始,顺指针绕一圈,沿途记下经过的宝石,比如项链: 0-1-2-3 ,它的可能的四种表示是0123、1230、2301、3012。达达现在心急如焚,于是他找到了你,希望你能够编写一个程序原创 2020-09-11 11:46:45 · 173 阅读 · 0 评论 -
《算法竞赛进阶指南》树形地铁系统
树形地铁系统一些主要城市拥有树形的地铁系统,即在任何一对车站之间,有且只有一种方式可以乘坐地铁。此外,这些城市大多数都有一个中央车站。想象一下,你是一名在拥有树形地铁系统的城市游玩的游客,你想探索该城市完整的地铁线路。你从中央车站出发,随机选择一条地铁线,然后乘坐地铁行进。每次到达一个车站,你都将选择一条尚未乘坐过的地铁线路进行乘坐。如果不存在未乘坐过的线路,则退回到上一个车站,再做选择。直到你将所有地铁线路都乘坐过两次(往返各一次),此时你将回到中央车站。之后,你以一种特殊的方式回忆自己的原创 2020-09-11 11:17:05 · 203 阅读 · 0 评论 -
《算法竞赛进阶指南》矩阵
矩阵给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。接下来一个整数Q。接下来Q个A行B列的01矩阵,数字之间没有空格。输出格式对于每个询问,输出1表示出现过,0表示没有出现过。数据范围A≤100,M,N,B≤1000,Q≤1000输入样例:3 3 2 211100011131100111100原创 2020-09-10 20:18:55 · 399 阅读 · 0 评论 -
《算法竞赛进阶指南》内存分配
内存分配内存是计算机重要的资源之一,程序运行的过程中必须对内存进行分配。经典的内存分配过程是这样进行的:1、 内存以内存单元为基本单位,每个内存单元用一个固定的整数作为标识,称为地址。地址从0开始连续排列,地址相邻的内存单元被认为是逻辑上连续的。我们把从地址i开始的s个连续的内存单元称为首地址为i长度为s的地址片。2、 运行过程中有若干进程需要占用内存,对于每个进程有一个申请时刻T,需要内存单元数M及运行时间P。在运行时间P内(即T时刻开始,T+P时刻结束),这M个被占用的内存单元不能再被其他进程使原创 2020-09-07 21:55:13 · 283 阅读 · 0 评论 -
《算法竞赛进阶指南》滑动窗口
滑动窗口给定一个大小为n≤106的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5 3 6] 7 3 6原创 2020-09-05 09:55:24 · 179 阅读 · 0 评论 -
《算法竞赛进阶指南》双栈排序
Tom最近在研究一个有趣的排序问题。通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。操作a如果输入序列不为空,将第一个元素压入栈S1操作b如果栈S1不为空,将S1栈顶元素弹出至输出序列操作c如果输入序列不为空,将第一个元素压入栈S2操作d如果栈S2不为空,将S2栈顶元素弹出至输出序列如果一个1~n的排列P可以通过一系列操作使得输出序列为1, 2,…,(n-1), n,Tom就称P是一个”可双栈排序排列”。例如(1, 3, 2, 4)就是一个”可双栈排序序列”,而原创 2020-09-04 22:05:04 · 197 阅读 · 0 评论 -
《算法竞赛进阶指南》城市游戏
城市游戏有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面原创 2020-08-30 18:31:51 · 109 阅读 · 0 评论 -
《算法竞赛进阶指南》荷马史诗
追逐影子的人,自己就是影子。 ——荷马达达最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,达达想通过一种编码方式使得它变得短一些。一部《荷马史诗》中有 n 种不同的单词,从 1 到 n 进行编号。其中第 i 种单词出现的总次数为 wi。达达想要用 k 进制串 si 来替换第 i 种单词,使得其满足如下要求:对于任意的 1≤i,j≤n,i≠j,都有:si 不是 sj 的前缀。原创 2020-08-21 12:06:39 · 256 阅读 · 0 评论 -
《算法竞赛进阶指南》数据备份
数据备份你在一家IT公司为大型写字楼或办公楼的计算机数据做备份。然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣。已知办公楼都位于同一条街上,你决定给这些办公楼配对(两个一组)。每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份。然而,网络电缆的费用很高。当地电信公司仅能为你提供 K 条网络电缆,这意味着你仅能为 K 对办公楼(总计2K个办公楼)安排备份。任意一个办公楼都属于唯一的配对组(换句话说,这 2原创 2020-08-15 00:46:29 · 212 阅读 · 0 评论 -
《算法竞赛进阶指南》序列
序列给定m个序列,每个包含n个非负整数。现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列。很明显,我们一共可以得到nm个这种序列, 然后我们可以计算每个序列中的数字之和,并得到nm个值。现在请你求出这些序列和之中最小的n个值。输入格式第一行输入一个整数T,代表输入中包含测试用例的数量。接下来输入T组测试用例。对于每组测试用例,第一行输入两个整数m和n。接下在m行输入m个整数序列,数列中的整数均不超过10000。输出格式对于每组测试用例,均以递增顺序输出最小的n个序列和,数值原创 2020-08-10 16:04:18 · 544 阅读 · 0 评论 -
《算法竞赛进阶指南》超市
超市超市里有N件商品,每件商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品不能再卖。求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。输入格式输入包含多组测试用例。每组测试用例,以输入整数N开始,接下来输入N对pi和di,分别代表第i件商品的利润和过期时间。在输入中,数据之间可以自由穿插任意个空格或空行,输入至文件结尾时终止输入,保证数据正确。输出格式对于每组产品,输出一个该组的最大收益值。每个结果占一行。数据范围0≤N≤10000,1≤pi,di≤10000最原创 2020-08-08 11:03:25 · 355 阅读 · 0 评论 -
《算法竞赛进阶指南》最长异或值路径
最长异或值路径给定一个树,树上的边都具有权值。树中一条路径的异或长度被定义为路径上所有边的权值的异或和:⊕ 为异或符号。给定上述的具有n个节点的树,你能找到异或长度最大的路径吗?输入格式第一行包含整数n,表示树的节点数目。接下来n-1行,每行包括三个整数u,v,w,表示节点u和节点v之间有一条边权重为w。输出格式输出一个整数,表示异或长度最大的路径的最大异或和。数据范围1≤n≤100000,0≤u,v<n,0≤w<231输入样例:40 1 31 2 41 3原创 2020-08-06 18:05:38 · 386 阅读 · 0 评论 -
《算法竞赛进阶指南》最大异或对
最大异或对在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少?输入格式第一行输入一个整数N。第二行输入N个整数A1~AN。输出格式输出一个整数表示答案。数据范围1≤N≤105,0≤Ai<231输入样例:31 2 3输出样例:3本题也是典型的Tire,但要注意的是,我们求异或的最大值是从Tire中找到最符合(尽可能)的最高位在以此往低位开始寻找的,即我们存储和查找的时候都要按照数据二进制的高位到低位的顺序进行操作。#include &原创 2020-08-03 10:17:16 · 382 阅读 · 0 评论 -
《算法竞赛进阶指南》 前缀统计
前缀统计给定N个字符串S1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1~SN中有多少个字符串是T的前缀。输入字符串的总长度不超过106,仅包含小写字母。输入格式第一行输入两个整数N,M。接下来N行每行输入一个字符串Si。接下来M行每行一个字符串T用以询问。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。输入样例:3 2abbcabcabcefg输出样例:20本题解题利用的是Tire的算法:首先我们根据被查询的对象建立Tire,并且.原创 2020-08-01 16:57:52 · 386 阅读 · 0 评论 -
《算法竞赛进阶指南》周期
周期一个字符串的前缀是从第一个字符开始的连续若干个字符,例如”abaab”共有5个前缀,分别是a, ab, aba, abaa, abaab。我们希望知道一个N位字符串S的前缀是否具有循环节。换言之,对于每一个从头开始的长度为 i (i>1)的前缀,是否由重复出现的子串A组成,即 AAA…A (A重复出现K次,K>1)。如果存在,请找出最短的循环节对应的K值(也就是这个前缀串的所有可能重复节中,最大的K值)。输入格式输入包括多组测试数据,每组测试数据包括两行。第一行输入字符串S的长原创 2020-07-29 23:26:23 · 254 阅读 · 0 评论 -
《算法竞赛进阶指南》 回文子串的最大长度
回文子串的最大长度如果一个字符串正着读和倒着读是一样的,则称它是回文的。给定一个长度为N的字符串S,求他的最长回文子串的长度是多少。输入格式输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个小写字符的形式给出。输入以一个以字符串“END”(不包括引号)开头的行表示输入终止。输出格式对于输入中的每个测试用例,输出测试用例编号和最大回文子串的长度(参考样例格式)。每个输出占一行。输入样例:abcbabcbabcbaabacacbaaaabEND输出样例:Cas.原创 2020-07-25 00:38:51 · 252 阅读 · 0 评论 -
《算法竞赛进阶指南》兔子与兔子
兔子与兔子很久很久以前,森林里住着一群兔子。有一天,兔子们想要研究自己的 DNA 序列。我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。输入格式第一行输入一个 DNA 字符串 S。第二行一个数字 m,表示 m 次询问。接下来 m 行,每行四个数字 l1,r1,l2,r2原创 2020-07-23 00:08:04 · 402 阅读 · 0 评论 -
《算法竞赛进阶指南》 雪花雪花雪花
雪花雪花雪花有N片雪花,每片雪花由六个角组成,每个角都有长度。第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,…,ai,6。因为雪花的形状是封闭的环形,所以从任何一个角开始顺时针或逆时针往后记录长度,得到的六元组都代表形状相同的雪花。例如ai,1,ai,2,…,ai,6和ai,2,ai,3,…,ai,6,ai,1就是形状相同的雪花。ai,1,ai,2,…,ai,6和ai,6,ai,5,…,ai,1也是形状相同的雪花。我们称两片雪花形状相同,当且仅当它们各自从某一角开始顺时针或原创 2020-07-18 23:16:07 · 446 阅读 · 0 评论 -
《算法竞赛进阶指南》邻值查找
邻值查找给定一个长度为 n 的序列 A,A 中的数各不相同。对于 A 中的每一个数 Ai,求:min1≤j<i|Ai−Aj|以及令上式取到最小值的 j(记为 Pi)。若最小值点不唯一,则选择使 Aj 较小的那个。输入格式第一行输入整数n,代表序列长度。第二行输入n个整数A1…An,代表序列的具体数值,数值之间用空格隔开。输出格式输出共n-1行,每行输出两个整数,数值之间用空格隔开。分别表示当i取2~n时,对应的min1≤j<i|Ai−Aj|和Pi的值。数据范围n≤10^5原创 2020-07-09 23:13:45 · 344 阅读 · 0 评论 -
《算法竞赛进阶指南》最大子序和
最大子序和输入一个长度为n的整数序列,从中找出一段长度不超过m的连续子序列,使得子序列中所有数的和最大。注意: 子序列的长度至少是1。输入格式第一行输入两个整数n,m。第二行输入n个数,代表长度为n的整数序列。同一行数之间用空格隔开。输出格式输出一个整数,代表该序列的最大子序和。数据范围1≤n,m≤300000输入样例:6 41 -3 5 1 -2 3输出样例:7求取自序和(或子串和)我们首先想到的是利用前缀和数组求取,当我们利用前缀和数组可以求取最大的一个自序和,但不能保证原创 2020-07-07 16:04:50 · 752 阅读 · 0 评论 -
《算法竞赛进阶指南》 双端队列
双端队列达达现在碰到了一个棘手的问题,有N个整数需要排序。达达手头能用的工具就是若干个双端队列。她从1到N需要依次处理这N个数,对于每个数,达达能做以下两件事:1.新建一个双端队列,并将当前数作为这个队列中的唯一的数;2.将当前数放入已有的队列的头之前或者尾之后。对所有的数处理完成之后,达达将这些队列按一定的顺序连接起来后就可以得到一个非降的序列。请你求出最少需要多少个双端序列。输入格式第一行输入整数N,代表整数的个数。接下来N行,每行包括一个整数Di,代表所需处理的整数。输出格式输原创 2020-07-06 14:33:56 · 407 阅读 · 0 评论 -
《算法竞赛进阶指南》蚯蚓
蚯蚓蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。蛐蛐国里现在共有 n 只蚯蚓,第 i 只蚯蚓的长度为 ai ,所有蚯蚓的长度都是非负整数,即可能存在长度为0的蚯蚓。每一秒,神刀手会在所有的蚯蚓中,准确地找到最长的那一只,将其切成两段。若有多只最长的,则任选一只。神刀手切开蚯蚓的位置由有理数 p 决定。一只长度为 x 的蚯蚓会被切成两只长度分别为 ⌊px⌋ 和 x−⌊px⌋ 的蚯蚓。特殊地,如果这两个数的其中一个等于0,则这个长度为0的蚯蚓也原创 2020-07-02 22:41:03 · 384 阅读 · 0 评论 -
《算法竞赛进阶指南》小组队列
小组队列有n个小组要排成一个队列,每个小组中有若干人。当一个人来到队列时,如果队列中已经有了自己小组的成员,他就直接插队排在自己小组成员的后面,否则就站在队伍的最后面。请你编写一个程序,模拟这种小组队列。输入格式:输入将包含一个或多个测试用例。对于每个测试用例,第一行输入小组数量t。接下来t行,每行输入一个小组描述,第一个数表示这个小组的人数,接下来的数表示这个小组的人的编号。编号是0到999999范围内的整数。一个小组最多可包含1000个人。最后,命令列表如下。 有三种不同的命令:1原创 2020-06-24 15:38:45 · 178 阅读 · 0 评论 -
《算法竞赛进阶指南》直方图中最大的矩形
直方图中最大的矩形直方图是由在公共基线处对齐的一系列矩形组成的多边形。矩形具有相等的宽度,但可以具有不同的高度。例如,图例左侧显示了由高度为2,1,4,5,1,3,3的矩形组成的直方图,矩形的宽度都为1:2559_1.jpg通常,直方图用于表示离散分布,例如,文本中字符的频率。现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。图例右图显示了所描绘直方图的最大对齐矩形。输入格式输入包含几个测试用例。每个测试用例占据一行,用以描述一个直方图,并以整数n开始,表示组成直方图的矩形数目。原创 2020-06-20 23:44:22 · 375 阅读 · 0 评论 -
《算法竞赛进阶指南》火车进出栈问题
火车进出栈问题一列火车n节车厢,依次编号为1,2,3,…,n。每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种。输入格式输入一个整数n,代表火车的车厢数。输出格式输出一个整数s表示n节车厢出栈的可能排列方式数量。数据范围1≤n≤60000输入样例:3输出样例:5分析:看到这种问题我们首先想到的方法就是模拟出栈进栈的操作在记录符合的次数,而我们模拟的话实际运用的就是dfs搜索,每一层dfs搜索都有两个方向(开头和结尾不算的话),即搜索的深度为最大60000.原创 2020-06-18 00:20:11 · 1788 阅读 · 0 评论 -
火车进栈
火车进栈这里有n列火车将要进站再出站,但是,每列火车只有1节,那就是车头。这n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。也就是说这个火车站其实就相当于一个栈,每次可以让右侧头火车进栈,或者让栈顶火车出站。车站示意如图: 出站<—— <——进站 |车| |站|原创 2020-05-15 22:53:58 · 348 阅读 · 0 评论 -
《算法竞赛进阶指南》任务
任务今天某公司有M个任务需要完成。每个任务都有相应的难度级别和完成任务所需时间。第i个任务的难度级别为yiyi,完成任务所需时间为xixi分钟。如果公司完成此任务,他们将获得(500 * xixi + 2 * yiyi)美元收入。该公司有N台机器,每台机器都有最长工作时间和级别。如果任务所需时间超过机器的最长工作时间,则机器无法完成此任务。如果任务难度级别超过机器的级别,则机器无法完...原创 2019-10-21 22:46:03 · 211 阅读 · 0 评论 -
《算法竞赛进阶指南》最大的和
最大的和给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。矩形的总和是该矩形中所有元素的总和。在这个问题中,具有最大和的子矩形被称为最大子矩形。例如,下列数组:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其最大子矩形为:9 2-4 1-1 8它拥有最大和15。输入格式输入中将包含一个N*N的整数数组。...原创 2019-10-13 15:41:58 · 302 阅读 · 0 评论 -
《算法竞赛进阶指南》 货仓选址
货仓选址在一条数轴上有 NN 家商店,它们的坐标分别为 A1A1~ANAN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1A1~ANAN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤1000001≤N≤100000输入样...原创 2019-08-24 22:44:40 · 159 阅读 · 0 评论 -
《算法竞赛进阶指南》电影
电影参考莫斯科正在举办一个大型国际会议,有n个来自不同国家的科学家参会。每个科学家都只懂得一种语言。为了方便起见,我们把世界上的所有语言用11到109109之间的整数编号。在会议结束后,所有的科学家决定一起去看场电影放松一下。他们去的电影院里一共有m部电影正在上映,每部电影的语音和字幕都采用不同的语言。对于观影的科学家来说,如果能听懂电影的语音,他就会很开心;如果能看懂字幕,他就会比...原创 2019-08-24 21:56:18 · 474 阅读 · 0 评论