洛谷P1823 音乐会的等待 单调栈 维护一个上升的单调栈 用以记录有当前这个数向后能看到几个数 但是每次加入一个数 时 他能看到的 是 单调栈中所有比他小的 和跟他一样的数 比他小的下次就没有用了,所以直接退栈 但是 相同的数到后面还是可能会有贡献的,所以贡献算完以后又要进栈 最后如果栈中还有元素 ...
分类:
其他好文 时间:
2017-07-22 10:56:04
阅读次数:
165
这道题用单调递增的单调栈维护每个数能够覆盖的最大区间即可。 对于 1 2 3 4 5 4 3 2 1 6 这组样例, 1能够覆盖的最大区间是10,2能够覆盖的最大区间是7,以此类推,我们可以使用单调栈来实现这种操作。 具体看代码: *Code: 每次进来一个比栈顶元素大的元素,就把他压入栈中,并把他 ...
分类:
其他好文 时间:
2017-07-20 14:16:26
阅读次数:
122
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13562 Accepted: 4576 Description Some of Farmer John's N cows (1 ≤ N ≤ 80,000) ...
分类:
其他好文 时间:
2017-07-18 00:01:35
阅读次数:
204
后缀数组+单调栈 看了好长时间,最后看了张神的程序才搞懂 意思就是求所有子串*n*(n+1)/2 n是子串出现次数 事实上,lcp可以看成宽度为1,高度为lcp值的长方形,所有lcp放在一起就是一堆长方形放在一起,然后我们就要求对于每个高度对应的长方形的面积乘上一个值 每个长方形可以用单调栈求,也就 ...
分类:
其他好文 时间:
2017-07-16 14:21:33
阅读次数:
300
后缀数组+st表+单调栈 这道题是差异的加强版 看起来和差异差不多,但是询问的位置是不连续的,那么我们让他们连续就行。 把每个位置赋成rank值,因为lcp[i]表示rank=i和i+1的最长公共前缀,然后st表处理出相邻两个rank的lcp值,然后和差异一样,单调栈处理最左端和最右端的区间,乘起来 ...
分类:
其他好文 时间:
2017-07-16 13:28:31
阅读次数:
125
1012: [JSOI2008]最大数maxnumber Description 现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操作。语法:A n 功能:将n加 上t ...
分类:
Web程序 时间:
2017-07-16 10:07:17
阅读次数:
197
1345: [Baltic2007]序列问题Sequence Description 对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列。这一操作的代价是max(ai ...
分类:
其他好文 时间:
2017-07-16 09:58:23
阅读次数:
173
给一系列并排的矩形,宽都是1,长不同,求最大的矩形(可被上述矩形覆盖)的面积 单调栈,栈中元素为每个值所在的位置,记录下从每个值大于当前值所能到达最远的左边和右边的距离,此时中间的值一定是最小,然后H*(R-L)即当前点所能覆盖的最大面积 #include<map> #include<set> #i ...
分类:
其他好文 时间:
2017-07-12 23:19:42
阅读次数:
126
http://acm.hdu.edu.cn/showproblem.php?pid=2870 Largest Submatrix Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
分类:
其他好文 时间:
2017-07-11 21:16:37
阅读次数:
147
【题目大意】 求全部数对(i,j)满足随意a[k]<=a[i]且a[k]<=a[j]。 形象地说,就是有一群人站成一列。每一个人有一定的身高,然后问有多少对人能够互相看得到。 把数对(i,j)简单地称之为看得到的数对。 【解析】单调栈 先借用一下曾经做的题:[Vijos]1926 紫色的手链。求随意 ...
分类:
其他好文 时间:
2017-07-10 18:05:32
阅读次数:
123