数据结构
数据结构
幽影相随
这个作者很懒,什么都没留下…
展开
-
51nod 1349 最大值(单调栈)
1349 最大值有一天,小a给了小b一些数字,让小b帮忙找到其中最大的数,由于小b是一个程序猿,当然写了一个代码很快的解决了这个问题。这时,邪恶的小c又出现了,他问小b,假如我只需要知道这些数字中的某个区间的最大值,你还能做嘛?小b经过七七四十九天的思考,终于完美的解决了这道题目,这次,他想也让小c尝尝苦头,于是他问小c,我现在想知道存在多少不同的区间的最大值大于等于k,你还能做吗?这次,小c犯了难,他来请教身为程序猿的你。Hint:一个区间指al,al+1,…,ar这一段的数且l<=r,一原创 2020-10-30 14:45:12 · 256 阅读 · 0 评论 -
51nod 1288 汽油补给(单调栈)
1288 汽油补给有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2… -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T。给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费。如果无法从起点到达终点输出-1。例如D = {10, 9, 8}, P = {2, 1, 3},T = 15,最小花费为41,在0加上10个单位的汽油,在1加满15个单位的汽油,在2加2个单位的汽油,走到终点时恰好用完所有汽油,花费为10 * 2 + 15原创 2020-11-01 17:06:06 · 182 阅读 · 0 评论 -
51nod 1275 连续子段的差异(单调队列)
1275 连续子段的差异给出一个包括N个元素的整数数组A,包括A本身在内,共有 (N+1)*N / 2个非空子段。例如:1 3 2的子段为{1} {3} {2} {1 3} {3 2} {1 3 2}。在这些子段中,如果最大值同最小值的差异不超过K,则认为这是一个合格的子段。给出数组A和K,求有多少符合条件的子段。例如:3 5 7 6 3,K = 2,符合条件的子段包括:{3} {5} {7} {6} {3} {3 5} {5 7} {7 6} {5 7 6},共9个。输入第1行:2个数N, K(1原创 2020-11-01 17:05:59 · 235 阅读 · 0 评论 -
Find my Family(set)
Find my FamilyThe first line contains , the number of photos you have to process.You are looking for a particular family photo with you and your favorite relatives Alice and Bob. Each family photo c...原创 2020-03-23 08:06:35 · 277 阅读 · 0 评论 -
51nod 1112 KGold(优先队列)
1112 KGold题目给出N个人在0时刻的财富值M[i](所有人在0时刻的财富互不相等),以及财富增长速度S[i],随着时间的推移,某些人的财富值会超越另外一些人。如果时间足够长,对于财富增长最快的人来说,他的财富将超越所有其他对手。求发生的前10000次超越,分别是谁超过了谁?如果总的超越次数不足10000,则输出所有超越,如果1次超越都不会发生,则输出No Solution。输出按照超越发生的时间排序,同一时刻发生的超越,按照超越者的编号排序,如果编号也相同,则按照被超越者的编号排序。所有排序原创 2020-08-23 18:03:43 · 137 阅读 · 0 评论 -
51nod 1153 选择子序列(单调队列)
1153 选择子序列题目长度为N的整数数组A,所有的数均不相同,假设下标从0开始。找到一个最长的数组B,B数组的长度为K,数值范围是0 - N - 1,记录的是A数组的下标。满足A[B[0]] > A[B[1]] > A[B[2]] >…A[B[K]],并且对任意连续的两项B[i]及B[i + 1],满足min(B[i],B[i + 1]) < j < max(B[i],B[i + 1]) 均有A[j] < A[B[i + 1]] ,求最大的K。例如:9, 10, 2转载 2020-08-23 19:04:40 · 183 阅读 · 0 评论 -
51nod 1215 数组的宽度(单调栈)
1215 数组的宽度题目N个整数组成的数组,定义子数组a[i]…a[j]的宽度为:max(a[i]…a[j]) - min(a[i]…a[j]),求所有子数组的宽度和。输入第1行:1个数N,表示数组的长度。(1 <= N <= 50000)第2 - N + 1行:每行1个数,表示数组中的元素(1 <= A[i] <= 50000)输出输出所有子数组的宽度和。输入样例512345输出样例20代码5入栈,前面所有比5小的出栈,并将右边界设为5 =>转载 2020-09-03 10:51:52 · 175 阅读 · 0 评论 -
1158 全是1的最大子矩阵(单调栈)
1158 全是1的最大子矩阵题目1158 全是1的最大子矩阵1.0 秒 131,072.0 KB 40 分 4级题给出1个M*N的矩阵M1,里面的元素只有0或1,找出M1的一个子矩阵M2,M2中的元素只有1,并且M2的面积是最大的。输出M2的面积。输入第1行:2个数m,n中间用空格分隔(2 <= m,n <= 500)第2 - N + 1行:每行m个数,中间用空格分隔,均为0或1。输出输出最大全是1的子矩阵的面积。输入样例3 31 1 01 1 10 1 1输出样例转载 2020-08-29 14:20:21 · 147 阅读 · 0 评论