用优先队列排序,优先队列是大根堆 https://www.cnblogs.com/grandyang/p/5454125.html ...
分类:
其他好文 时间:
2018-09-16 23:58:24
阅读次数:
410
一、什么是堆? 堆:一种特殊的完全二叉树结构。 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大; 小根堆:一棵完全二叉树,满足任一节点都比其他孩子节点小。 ...
分类:
编程语言 时间:
2018-09-14 13:54:06
阅读次数:
149
和数据备份差不多 设二元组(i,a[i]),开一个大根堆把二元组塞进去,以len排序,每次取出一个二元组 因为单纯的贪心是不行的,所以设计一个“反悔”操作。 记录二元组的前驱pr后继ne,把拿出来的二元组的len加进答案,然后把当前二元组和它的前驱后继当成一个,也就是len[x]=a[pr[x]]+ ...
分类:
其他好文 时间:
2018-09-13 21:38:03
阅读次数:
156
CF962D 题意: 给定一个数列,对于靠近左端的两个相同大小的值x可以合并成一个点。把x 乘以2 放在第二个点的位置,问最后的数列大小和每个位子的值。 思路: 利用set 配上 pair 就行了,感觉很巧妙,每次取出前两个pll t1,t2。 如果 t1.first != t2.first ,把t ...
分类:
其他好文 时间:
2018-08-30 22:14:44
阅读次数:
256
1025D 题意: 有一个递增序列,问能不能构建出一颗每条边的端点值都不互质的二叉排序树。 思路: 区间DP,但是和常见的区间DP不一样, 这里dp【i】【j】表示的是区间【i,j】能否以i为根建立一个小二叉排序树。 所以可以得到dp【i】【j】 为true, 要求在【i+1,j】中有一个k,dp【 ...
分类:
其他好文 时间:
2018-08-24 18:11:59
阅读次数:
178
https://www.zybuluo.com/ysner/note/1248857 题面 给定一棵$n$个节点的有根树,编号依次为$1$到$n$,其中$1$号点为根节点。每个点有一个权值$v_i$。 选择尽可能多的节点,使对于任意两个点$i,j$,如果$i$在树上是$j$的祖先,那么$v_i v_ ...
分类:
其他好文 时间:
2018-08-13 23:49:50
阅读次数:
174
题意:维护一个序列,两种操作 1、插入一个数 2、输出中位数(若长度为偶数,输出中间两个较小的那个) 对顶堆 维护一个小根堆,一个大根堆,大根堆存1--mid,小根堆存mid+1 n 这样对顶必有中位数。 每次操作后维护两个堆元素数量,保证一个比另一个多1或相等 ...
分类:
其他好文 时间:
2018-08-08 21:26:14
阅读次数:
250
传送门 思路:一个贪心策略就是“在不挤超过截至时间的奶牛的前提下,尽量挤奶量大的奶牛”。So我们将奶牛按截至日期从小到大排序,对于每个截至时间t,将所有截至时间为t的奶牛的奶量加入一个大根堆,只留下前t大的数,剩下的直接删去。由于priority_queue没有clear函数,所以我手写了一个堆。。 ...
分类:
其他好文 时间:
2018-08-04 20:35:45
阅读次数:
196
第一想法是按照结束时间贪心,但是这样有反例 所以先按照t贪心,能选则选,把选的楼的持续时间放进大根堆里,当当前的楼不能选的时候如果当前的持续时间比大根堆里最大的要小,就用这个替换最大,这样总数不变但是时间缩短了 cpp include include include include using na ...
分类:
Web程序 时间:
2018-08-02 20:43:00
阅读次数:
181
bfs的难点在于怎么去表示一个问题的状态【也就是如何去判重】 记得用priority_queue的时候如果往里面放node,自己重载小于号的形式是在struct里写: 【记得要写const】 ...
分类:
其他好文 时间:
2018-07-27 01:13:14
阅读次数:
178