栈
河渔船
成长的小垃圾
展开
-
P1198 [JSOI2008]最大数
https://www.luogu.org/problem/show?pid=1198#sub因为询问的是末尾L个数中的最大数。由于L不固定,所以用单调栈而不是单调队列。于是需要维护一个单调递减栈。插入操作和单调队列一样,当当前数大于栈顶时栈顶出栈,然后当前数进栈。由于栈底不能像队首一样被弹出(不存在“过期元素”),查询操作不可能做到O(1)了。显然20W的规模不可能用O(n)的算法进行单次操作。考原创 2017-04-08 16:30:47 · 334 阅读 · 0 评论 -
希望
【题目描述】 网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈, “前进栈”、“后退栈”。 这里你需要实现以下几个功能: BACK: 如果“后退栈”为空则忽略此命令。 否则将当前两面压入“前进栈”, 从“后退栈”中取出栈顶页面,并设置为当前页面。 FORWARD: 如果“前进栈”为空则忽略此命令。否则将当前两面压入“后 退栈”,从“前进栈”中取出栈顶页面,并设置为当前页原创 2017-09-29 17:57:18 · 225 阅读 · 0 评论 -
NOIP 2013 积木大赛
评测传送其实这道题比起其他年份的T1还是算难的。 花费时间:40min+我的做法是: 用一个栈,来存某一段。 看图理解 我们先将第一段橙色的入栈,因为这是第一段,所以次数是st[top]; 然后清空栈,将绿色的入栈,需要的次数是st[top]-st[1]=2;(因为是递增的,所以已经清空的上一段最后一个一定比当前这一段的第一个高,所以在之前就可以将这一段的这个高度给覆盖掉,所以需要的次数是原创 2017-10-18 13:57:55 · 479 阅读 · 0 评论 -
排列
传送 时间限制:1s内存限制:256MB问题描述 给出一个随机的排列,请你计算最大值减最小值的差小于等于0~n-1的区间分别有多少个。输入格式 输入文件名为sum.in。 第一行一个数T(<=10),表示数据组数 对于每一组数据: 第一行一个数n(1<=n<=100,000) 第二行n个数a1…an,表示一个随机的排列输出 输出文件名为sum.out。 对于每组数据输出n行,分别表原创 2017-10-03 22:31:15 · 243 阅读 · 0 评论