
算法
Left翼
IT本科生一枚
展开
-
POJ 1276 Cash Machine 多重背包问题
题目看完了《背包九讲》,找个OJ练练手。 原题参考: http://poj.org/problem?id=1276 大意是:一个取款机有N种钞票,每种钞票有nk张,面额为Dk,给定一个取款金额cash,可行的、不超过该金额的吐钞方案是多少钱?解法多重背包问题的变体,参考《背包九讲》。变体的地方仅仅是:价格和代价合一。代码很容易写出普通的版本(Version 1),写着写着才想到其实价值并不需要存原创 2015-08-30 14:42:09 · 482 阅读 · 0 评论 -
微软笔试题 HihoCoder#1137: Recruitment 题解
题目 原题参考:http://hihocoder.com/problemset/problem/1137?sid=476594 大意是:有N个应聘者,分别知道他们的价值V,期望薪水S,以及性别。招聘要求是:男X名,女Y名,总预算B(即期望薪水之和不能超过B),如何使总价值最大?思路很容易想到,这题是01背包问题的一个变体。基本思路是分别对男、女集合做01背包。几个难点: 男、女分开的预算不知道,原创 2015-08-30 18:01:02 · 1501 阅读 · 0 评论 -
微软笔试题 HihoCoder#1136: Professor Q's Software 题解
题目来源题目: http://hihocoder.com/problemset/problem/1136 Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by sign原创 2015-08-29 16:14:58 · 916 阅读 · 0 评论 -
“取最大的K的数”的两种解法
输入n个整数,输出其中最大的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为5,6,7和8。 解法一开一个容量为K的最小堆。每次来一个数,比较堆顶(最小值)和这个数谁大,如果当前的数更大,就替换掉堆顶。时间复杂度 O(nlogk)O(n \log k)优点:对于海量数据(流),可以用O(k)O(k)的内存搞定缺点:堆的实现略复杂,建议直接用STL解法二用QuickSelec原创 2015-09-11 11:01:55 · 879 阅读 · 0 评论 -
取出现次数最多的K个数
题目 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。 思路第一步:用Hashmap(STL中叫unorder原创 2015-09-11 13:43:27 · 2610 阅读 · 0 评论