随笔分类 -  ACM-栈和队列

摘要:题目链接 http://cs.nyu.edu/courses/spring12/CSCI-GA.2560-001/prog1.html题目大意:给定n个任务的时间、价值及先后序关系,求一个可行的任务子集,使得时间之和不大于deadline,价值之和不小于targetVaule,且不可出现逆序。算法思路:题目已经给出算法,转化为状态空间搜索问题(tree-structured state space search problem),先对结点拓扑排序,存储前序的结点关系,然后先对状态搜索树进行BFS,可行的状态压入队列,到达到限制值后,再以队列中的状态为起点进行迭代深入搜索(Iterative d 阅读全文
posted @ 2012-02-16 01:28 yangleo 阅读(485) 评论(0) 推荐(0)
摘要:题意:给定字符串,求哈夫曼编码长和它与等长编码的比值,比较基础思路:这题考查哈弗曼编码,但其实没必要建树得出编码,只需要统计哈弗曼编码后的总码长即可参考了网友的题解,用到了优先权队列维持一个从小到大的序列第38行其实就是把越小的频数反复多加几次,越大的频率少加几次,体现了前缀码的设计思想Source CodeProblem: 1521User: yangliuACMerMemory: 232KTime: 0MSLanguage: C++Result: Accepted//这题考查哈弗曼编码,但其实没必要建树得出编码,只需要统计哈弗曼编码后的总码长即可 #include <iostream 阅读全文
posted @ 2011-12-29 02:28 yangleo 阅读(842) 评论(0) 推荐(0)
摘要:本题很简单,变形虫的长度合成满足一定公式,只要每次从所有变形虫当中取出最长的两只合成新虫放进长度集合即可由于要不断取最大值,可以考虑用优先权队列或者堆Source CodeProblem: 1862User: yangliuACMerMemory: 272KTime: 47MSLanguage: C++Result: Accepted#include <iostream> #include <queue> #include <cmath> using namespace std; int main(){ int n,i; double a,b,t; prio 阅读全文
posted @ 2011-12-24 21:41 yangleo 阅读(242) 评论(0) 推荐(0)
摘要:以后一定要细心,不能再犯这个低级的错误,把WA控制在最低范围内参考了http://www.cnblogs.com/damacheng/archive/2010/09/24/1833983.html的题目分析题目大意:你要写一个OS,要实现磁盘碎片整理的功能。磁盘分为N个簇,一个文件可以占用K个簇,(1 <= K < N <= 10000),给出各个文件的占用磁盘的情况,也就是一个文件占用了哪些簇,想要进行碎片整理,就是把这些簇按顺序整理到磁盘的最顶部,例如给出示例: 文件1:2 3 11 12,占用了4个簇,编号为1-4。 文件2:7,占用了1个簇,编号为5。 文件3:18 阅读全文
posted @ 2011-12-24 20:33 yangleo 阅读(365) 评论(0) 推荐(0)
摘要:这是我面试一个公司的时候碰到的面试题Q请用两个栈模拟实现队列,至少完成入队、出队及计算长度的方法A 基本思路是两次后进先出 = 先进先出,元素入队列总是入左栈,元素出队列如果右栈不为空直接弹出右栈头元素;如果右栈为空就把左栈元素出栈全部压入右栈,再弹出右栈头,这样就模拟出了一个队列。Class Q{ stack<int> S1,S2; void push(int a){ S1.push(a);} int pop(){ if(S2.empty()){ while(S1.size()>0){ S2.push(S1.pop()); } } return S2.pop();... 阅读全文
posted @ 2011-12-21 00:29 yangleo 阅读(253) 评论(0) 推荐(0)