堆
Kesiruto
猜猜我写什么??
展开
-
排序I
题目大意给你n个数,由小到大排序。思路此题时间复杂度为O(nlog n)。堆上运算(上移、下移、插入、删除、删除最大值)、创建堆、堆排序。上移操作假定对于某个i>1,H[i]变成了健值大于它父结点的健值的元素,这样就违返的堆的特性,因此这样的数据结构就不成为堆了,要修复堆的特性,需要用Sift-up把新数据项移动合适的位置。即:运算沿着从H[i]到根结点的唯一一条路径,把H[i]移动到合适的位置。下原创 2016-12-09 19:50:53 · 313 阅读 · 0 评论 -
合并果子
题目大意有n堆果子数目,需要合并成一堆。合并两堆果子需要的体力为两堆果子数目之和,求所需的最小体力值。输入3 1 2 9输出15思路此题时间复杂度O(nlog n)。构建一棵小根堆,每次把堆顶和最后一个相加,重复操作,累加体力值,直到剩下一个值,堆操作请看上一篇。代码const maxn=100000; type arr=array[1..maxn] of longint; var原创 2016-12-09 20:22:45 · 367 阅读 · 0 评论 -
USACO 3.1 Humble Numbers丑数
USACO 3.1 Humble Numbers丑数 (搜索)Time Limit:12000MS Memory Limit:65536K Total Submit:118 Accepted:33 Case Time Limit:1000MSDescription 对于一给定的素数集合 S = {p1, p2, …, pK}, 来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1,原创 2016-11-12 11:43:18 · 554 阅读 · 0 评论 -
最小函数值
题目大意给n个函数。Fi(x)=Ai*x^2+Bi*x+Ci 。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的m个。输入3 10 4 5 3 3 4 5 1 7 1输出9 12 12 19 25 29 31 44 45 54思路维护一个小根堆,里面的值为,按照要求每次输出堆顶,并将堆顶函数中的x加1再下调整个堆,直到输出m次堆顶。代码var p,x,i,n,m,k,f,zz,原创 2016-12-14 16:57:03 · 601 阅读 · 0 评论