输入n个整数,输出其中最大的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为5,6,7和8。

解法一

开一个容量为K的最堆。每次来一个数,比较堆顶(最小值)和这个数谁大,如果当前的数更大,就替换掉堆顶。时间复杂度 \(O(n \log k)\)

阅读全文 »

题目

原题:http://hihocoder.com/problemset/problem/1137?sid=476594

大意是:

有N个应聘者,分别知道他们的价值V,期望薪水S,以及性别。招聘要求是:男X名,女Y名,总预算B(即期望薪水之和不能超过B),如何使总价值最大?

阅读全文 »

题目

看完了《背包九讲》,找个OJ练练手。

原题参考: http://poj.org/problem?id=1276

大意是:一个取款机有N种钞票,每种钞票有n[k]张,面额为D[k],给定一个取款金额cash,可行的、不超过该金额的吐钞方案是多少钱?

阅读全文 »

前几天Google onsite面试,已挂。今天仔细思考了面试中一道没写出来的题,发现也并不难。诶,只能怪当时脑抽了。

题目大意

给定一个巨大的无序数组,输出数组中出现次数最多的K个数。

阅读全文 »

函数说明

参数都是一样的:

make_heap(first ,last)
make_heap(first ,last, cmpObject)

[first, last)范围进行堆排序,默认使用less<int>, 即最大元素放在第一个。

pop_heap(first ,last)
pop_heap(first ,last, cmpObject)
阅读全文 »
0%