随笔分类 - 思维题
摘要:咕咕的搜索序列 思维 踩坑 1,观察完整的dfs序,即后序遍历,以r为子树的dfs序一定是连续的,且最右边为节点r。 2,故有等式: 设 该树的dfs序为 S, 以r为子树的dfs序的区间为[x, y] 则有 : S[y] = r, 最右边为点r y - x + 1 = size[r] 该区间的长度
阅读全文
摘要:树上逆序对 思维 1,看到逆序对,还是树上和父节点有关系的,就想到树状数组来统计小于等于x的数的个数,只需维护一下该点到根节点的树状数组即可。dfs正好满足。 2,只求一边好求O(n),但是这可能要m次,就不能暴力了,每次处理最多 O(1) 或 O(log(n)) 的复杂度。 3,在线算法不好想,故
阅读全文
摘要:Basic Data Structure 思维 1,如果有0,那么前面的只要有数即为1. 2,故只需统计最后一个0的位置和该位置后的1的数量,可以用下标求解。 3,要手写双端队列,不要有deque ,没法存位置下标信息。 /* hello world! Just do it! start time:
阅读全文
摘要:区区区间间间 思维 观察到这就离胜利不远了 知道a[i] 的 左扩展 l[i] 和 右扩展 r[i] 时, 则以a[i] 作为最大值的区间个数可以计算出来 两边的数组合,加 一个端点是i ,另一个端点在 l[i] ~ r[i]中。 注意l[i] 取 >= 时,r[i] 应取 < 才能保证不重不漏。
阅读全文
摘要:array 观察 观察输入可知 a和b数组中,大部分必定全为0!!! 故 思维 a 和 b中可多都是0,这样每次循环n还是过不了 1,找到a 和 b 数组中的最大值 2,c中的值一定大于等于 a和b中的最大值 3,考虑a中非零的数和b中非零的数相结合产生的贡献,即 #include <bits/st
阅读全文