数据结构:last数组
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet last数组、预处理、优化
题意:给出n*m个树,询问第i行到第j行是否至少有一列是非递减序列。 预处理、last数组、优化 用 vector<int> f[maxn],其中f[i]表示第i列的数据, 然后O(n*m)的标出非递减状态结束时的点。 然后用lastj[j]表示上一次处理时访问到的非递减状态结束时的点的下一个点。 所以对于每个0 < i < n 预处理出ans[i]表示i为起点的存在的最长的非递减序列的长度,对于每个1 <= j <= m,扫到本次非递减状态结束的点然后刷新last[j]。 克制当 last[j] > i原创 2017-02-24 23:53:16 · 593 阅读 · 0 评论 -
Codeforces Round #420 (Div. 2) C. Okabe and Boxes 栈+last标记+贪心
题意:有1~n这n个数,给出一个stack的push和pop的序列,要求在执行的过程中用尽可能少的重排次数,使得能够使pop的顺序是1~n的顺序。 栈+last标记+贪心 1~2*n个操作,用一个last标记最近一次重排的位置,初始为last = 0。 然后用一个栈表示上一次重排后push如的元素的栈结构。 每次remove,如果当前需要pop的cnt == top则直接从stack pop掉, 否则,如果栈空,且mp[cnt]出现的位置在last之前,则可以直接pop, 不然则需要一原创 2017-06-26 19:38:08 · 867 阅读 · 0 评论