堆
Hanks_o
一名。
展开
-
bzoj1293: [SCOI2009]生日礼物(堆)
题目传送门解法: 坐在颓凳上吹了半个小时空调想出来的。 这道题不就是每一行数选一个数,然后使得最大值-最小值尽量小咯。因为头尾的彩珠不可能是同一种嘛。如果是同一种的话那我还可以缩减长度啊。 所以每一种彩珠只有一个点参加头尾的比较。 所以说每一行只用选出一个点就够了其他的点不用管。。然后怎么选我就不会做了。 请教师兄: 师兄跟我说枚举开头或者结尾。 然后每一行找刚刚好比他大的,用单调队列原创 2017-10-11 14:24:52 · 311 阅读 · 0 评论 -
bzoj1058: [ZJOI2007]报表统计(splay+堆)
题目传送门 。解法: 第一问就只需用小根堆维护每个原序列最后一个插入的是什么就行了。 每次进来的先把原来这个位置最后一个跟后面那个位置的差先删了 然后把新的两个差值加入堆。第二问就是splay维护前驱后继就行了呀。代码实现:#include<queue>#include<cmath>#include<cstring>#inclu...原创 2018-03-03 13:57:53 · 239 阅读 · 0 评论 -
bzoj2151: 种树(贪心+堆)
题目传送门 。解法: 今天才学这种经典做法。。 如果选最大的然后删除两边很显然这种策略是错误的。 因为有可能两边加起来更优。那么上面的做法是无法反悔的。。 给他一个反悔的机会。 那么就是: 假设选了i,那么删除i前后的两个点。 然后把i这个点的权值变为a[前]+a[后]-a[i]。 这样再选i的话就表示反悔了选了前后两个。 维护一下这个位置是否删除。这个位置的前一个未被...原创 2018-03-25 11:39:02 · 732 阅读 · 0 评论 -
bzoj1150: [CTSC2007]数据备份Backup(堆+贪心)
题目传送门 。解法: 跟上一题差不多一个思想。 bzoj2151 只不过这题多了一个比较恶心的边界而已。那么相对于边界值。就拿他前面没有点来举例。 假设现在前面没有点了。那么肯定选他之后不用反悔啊。 因为你后面那个肯定比你小啊要不然干嘛选你呢。 所以说选完之后把自己和后面的点删除就行了。 维护一下即可。 跟2151唯一的不同也就这个点了。 如果后面没有点也是一样的道理。...原创 2018-03-25 12:03:18 · 371 阅读 · 0 评论