随笔分类 -  1优先队列

摘要:我每次都想选那个最大的、或者是它旁边的两个一起选,如果这两个一起选会大于那个最大的的话 那我就先把那个最大的选了,再提供一个反悔的选项(类似于网络流的思路?),就是我可以再把种的树换成它旁边那两个,也是相当于又多种了一个,这个的权值是v[l]+v[r]-v[x] 所以用一个双向链表维护这个l、r,用 阅读全文
posted @ 2018-11-01 08:48 Ressed 阅读(148) 评论(0) 推荐(0)
摘要:首先如果没有出现次数的限制的话,这题就是超级钢琴 但由于有了这个限制,不能简单地用前缀和 考虑顺着做的时候每个点的贡献,如果a[i]=x,x上次出现位置是lst[x](可以用一个map来记),那它会给右端点为[i,N],左端点为[lst[x]+1,i]的区间带来x的贡献 根据szr巨佬的说法,主席树 阅读全文
posted @ 2018-10-15 21:17 Ressed 阅读(165) 评论(0) 推荐(0)
摘要:把超级钢琴放到了树上。 这次不用主席树了..本来以为会好写一点没想到细节更多(其实是树上细节多) 为了方便,对每个点把他的那个L,R区间转化成两个深度a,b,表示从[a,b)选一个最小的前缀和(到根的和)减掉 为了更加方便,编号变为2~N+1,然后把2连到1上,1作为一个假根,权值为0 然后倍增去找 阅读全文
posted @ 2018-10-09 10:09 Ressed 阅读(308) 评论(0) 推荐(0)
摘要:思路:先扫一遍所有点作为右端点的情况,把它们能产生的最大值加到一个优先队列里,然后每次从优先队列里取出最大值,再把它对应的区间的次大值加到优先队列里,这样做K次 可以用一个前缀和,每次找i为右端点的第K大时,就相当于找[i-R,i-L](可能有±2的偏差,会意)的第K小值,然后把它减掉 这个可以用主 阅读全文
posted @ 2018-10-09 10:04 Ressed 阅读(227) 评论(0) 推荐(0)