数据结构
liujc_
这个作者很懒,什么都没留下…
展开
-
scu 3139 单调队列
链接:http://acm.scu.edu.cn/soj/problem.action?id=3139 单调队列经典应用。 题意:有一个滑窗,长度为n,将滑窗一直往右边移动,确定每一次这个滑窗里面的最大值最小值是多少。 单调队列: 又称双端队列。以保存最大值为例。 队列中的元素是单调的不减的。 队头存放最大值,每次要将元素加入队列的时候,从队尾开始将比这个元素小的弹出,最后将这个元素加入原创 2015-11-09 15:15:11 · 427 阅读 · 0 评论 -
scu 3636 二维单调队列
链接:http://acm.scu.edu.cn/soj/problem.action?id=3636 题意: 从一个大a*b的矩阵中,找出一个n*n正方形的区域,找出最大值和最小值,最后输出a*b矩阵中所有“n*n正方形区域中的最大整数和最小整数的差值”的最小值。 做法: 二维单调队列,类似那个滑窗的题目。对于这题可以考虑将每一行的长度为n的区段的最大值和最小值都压缩到一个点上,这边就可以原创 2015-11-09 15:29:36 · 604 阅读 · 0 评论 -
scu 2057 树状数组 单点更新区间求和问题
链接:http://acm.scu.edu.cn/soj/problem.action?id=2057 题意: 给定n个店铺,给了初始商品i个。 两种操作,1)将第a个店铺的商品加b个。2)询问a~b这些店铺中有几个商品的数量是一个素数。 做法: 单点更新,区间求和问题,利用树状数组实现。不过我还是比较习惯线段树,但是这题线段树太诡异。。只能放弃治疗。刚好复习一下树状数组吧。。 对于修改原创 2015-11-09 15:38:05 · 356 阅读 · 0 评论 -
soj 3085 windy's cake V 单调栈的应用
http://acm.scu.edu.cn/soj/problem.action?id=3085 单调栈: 栈与单调性的结合。维护栈顶到栈底为单调增或减。可应用于求以a[i] 为最值向左(右)扩展的最长长度,该区间内a[i]为最值。比如该题思路:则要求以a[i] 为最小值的 最长区间,运用一个l[i] 来记录区间的左边界,r[i]来记录区间的右边界。本题维护一个栈顶到栈底递减的单调栈,l[i]为原创 2015-11-16 13:00:41 · 353 阅读 · 0 评论 -
soj 2511 Moooo 单调栈
http://acm.scu.edu.cn/soj/problem.action?id=2511 题意:每头牛都会发出叫声,然而这个叫声只会被离他最近的一个比他高的牛听到,当然这个叫声是双向传播的。 思路: 找出第一个比他高的,就可以维护一个从栈顶到栈底单调增的栈,每次每个元素要进栈之前就将栈中所有比他小的元素出栈,这样之后栈顶的元素就是第一个比他高的。也就是跟那个windy cake 类似,原创 2015-11-17 22:11:46 · 398 阅读 · 0 评论 -
trie树 soj3076
trie树学习资料:http://www.acmerblog.com/trie-tree-template-3700.html trie树第一题 题意:给定n个字符串,求出每个字符串之前有几个与他相同的字符串。 模板:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using names原创 2015-11-25 21:29:00 · 276 阅读 · 0 评论