摘要: 先考虑只能往一边传播,最后正反两边就行 一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可 cpp include include using namespace std; const int N=50005; int n,a[N],v[ 阅读全文
posted @ 2018-04-29 21:47 lokiii 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 严格次小生成树模板 算法流程: 先用克鲁斯卡尔求最小生成树,然后给这个最小生成树树剖一下,维护边权转点权,维护最大值和严格次大值。 然后枚举没有被选入最小生成树的边,在最小生成树上查一下这条边的两端点的路径上的最长边,如果最长边等于枚举到的边的边权,那么选次长边(没有次长边的话直接跳过),然后在最小 阅读全文
posted @ 2018-04-29 20:53 lokiii 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 开一个单调递减的单调栈,然后用sum数组维护每个点的答案,新加点的时候一边退栈一边把退掉的点的sum加进来 cpp include include using namespace std; const int N=800005; int s[N],top,a[N],n,sum[N]; int rea 阅读全文
posted @ 2018-04-29 08:36 lokiii 阅读(134) 评论(0) 推荐(0) 编辑