优先队列
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj 1216 [HNOI2003]操作系统
一开始想的用heap维护一下,但是发现输出不好搞,而且维护两个值的heap好像不怎么会做,然后学习了一发优先队列,挺好用的,直接模拟就好了,用优先队列维护一下优先级和到达时间就好了。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<queue>#define fo(i,a,b) fo原创 2017-04-18 15:35:04 · 362 阅读 · 0 评论 -
bzoj1747[Usaco2005 open]Expedition 探险 优先队列+贪心
这题的话,贪心策略挺明显的,就是不能跑了直接把以前没加过油的最大加油站加油就可以了。 然后一开始直接记录最大值发现错了,想了想发现如果我这个最大值用过了下一次的最大值可能在这之前也可能在这之后,所以必须要维护一个大根堆。。 优先队列完美解决啦。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#incl原创 2017-06-09 00:41:44 · 761 阅读 · 0 评论 -
jzoj4726. 【NOIP2016提高A组模拟8.22】种花 贪心+堆
这题思路很巧妙,要借鉴。 题意:给你一个环,选出M个点,任意两个互不相邻,要求总和最大。 一开始想的dp,设f[i][0/1]表示i选不选的最大总和,然后发现i的取值基本上能和他前面所有的值都有关联,由于是个环,所以dp你连预处理都会炸。。如果是个序列就可以这么做,不过在后面复制一遍然后用单调队列优化好像也可以,但那就太不优美了其实是我懒得打 那么我们可以贪心,把所有的数加入大根堆,每次取出最原创 2017-08-09 10:51:33 · 496 阅读 · 0 评论 -
bzoj4596&&JZOJ5271&&5043保持平衡 贪心+堆(经典思想)
博爱路上种起了一棵棵的大树,但是有一些地方的树超过了负荷,有一些地方的树的数量又不够。我们不妨把博爱路看做一条数轴,数轴有n个点,从1到n编号,第i个位置原来现在有ai棵树,这个位置的需求是bi棵树。ai,bi都是0到10的整数。由于你需要是这个位置的树的数量保持平衡,所以你需要移除或者搬一些树过来。我们怎么使树的数量平衡呢?首先,你可以从某个位置i移动一棵树到位置j,这时,你需要的运费是|i原创 2017-08-14 16:59:49 · 402 阅读 · 0 评论 -
51nod 最大M子段和 V1,V2,V3 dp 贪心 heap(bzoj2288)
题意:给一个长度为n的序列,要求选出m个不相交的部分,要求总和最大,如果m>= n个数中正数的个数,那么输出所有正数的和。。 V1:n,m<=5000. V2:n,m<=50000. V3:n,m<=500000.V1: 一个简单的DP。 明显有f[i][j]表示做到第i个,选择了j段。 那么可以推导: 新开一段f[i][j]=f[i−1][j−1]+a[i]f[i][j]=f[i-1原创 2017-10-17 17:25:34 · 412 阅读 · 0 评论 -
bzoj1555KD之死 贪心+堆
题意:有一些箱子,有承重和重量,最底下有一个车,有承重限制。 要求最多能放多少个箱子。不能说水,也不能说难的一道题。。 首先肯定知道如果bt-aw>at-bw那么a肯定要在b上面更加优秀,那么按照这个排序以后来贪心做。 如果当前盒子必须要放,那么如果放上去以后超重了,那么把最重的盒子拿出来扔掉再把当前盒子加入。如果堆中没有盒子了则无解。 如果当前盒子不必须要放,那么能放就放,如果这个盒子不能原创 2017-10-29 10:21:33 · 437 阅读 · 0 评论