Rafy

stay Foolish , stay Hungry

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年3月19日

摘要: 题目链接:http://pat.zju.edu.cn/contests/pat-practise/1014题目一如既往的英文题,内容一大堆其实就是在说一句话:模拟出银行柜台业务办理逻辑,求出指定的顾客业务办理完成的预计时间。这道题之所以写下来,实际上是借此对操作系统的一些知识进行回顾,进程管理时的队列管理和这道题如出一辙,以前都是在书上看看,纸上谈兵,今天才借此题实际的操作了一下。先说说这道题的梗概:银行里有n个柜台窗口,每个窗口最多能同时容纳m个顾客排队,多余的呢,随便站在大厅里,只要别蹭到黄线内即可,每个顾客有一个业务处理时间预期值,每当n个窗口的队列不是全满时,即可让黄线外的顾客入队,入 阅读全文
posted @ 2012-03-19 19:28 Rafy 阅读(1268) 评论(0) 推荐(0) 编辑

2012年3月17日

摘要: 题目链接:http://pat.zju.edu.cn/contests/pat-practise/1009这道题是前面A+B for Polynomials的升级版,求两个多项式的和,由于有前车之鉴,所以这道题我注意了结果为0的项,其实我是用了一个通用的方式来处理结果,所以提交的时候并没有被什么陷阱绊住,首先,A*B,两项系数相乘,指数相加,后面还有同样指数的项要合并,这样的处理符合逻辑但是操作起来比较麻烦,我首先算出A*B得到的最大指数是多少,存为max,然后开了一个大小为max + 1的c数组存结果,A*B时指数相加的和就是C的下标索引,这样就可以实现边乘边合并指数相同的项,而且初始化c数 阅读全文
posted @ 2012-03-17 14:33 Rafy 阅读(1125) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://pat.zju.edu.cn/contests/pat-practise/1007最大连续子序列和,动态规划的简单题,其实这个题不用动态规划的方法去理解算法也很简单,用sum存储遍历途中遇到的当前最大和,用temp存储当前处理的子序列和,如果temp>=0,则访问a[i]时,temp += a[i],但若temp是小于0的,则加上a[i]以后定然小于a[i],所以直接把temp更新为a[i],访问一个新的子序列,如果temp大于sum,则更新sum,以上就是解题思路,由于题目中要求求出最大和的同时,记录下相应子序列的首尾元素值,若序列全是负数,则最大和定义为0,首 阅读全文
posted @ 2012-03-17 13:03 Rafy 阅读(3962) 评论(0) 推荐(1) 编辑

2012年3月16日

摘要: 题目链接:http://pat.zju.edu.cn/contests/pat-practise/1004该题是个模拟类吧,个人觉得,题目要求计算出家谱树中每一层的叶节点个数,因为只是数数目,所以在做题的时候可以用一些小聪明省去不需要的内存开销和逻辑处理,比如不需要记录某一个结点有多少孩子,更不用提这些孩子都是哪些结点,只用记录一个值:该节点有没有孩子;还有就是记录该节点所在层数,自己确定根结点在第一层,然后根据输入的家谱关系更新所有结点的level值,所以树中节点的结构体为:1 typedef struct2 {3 int level;//该结点所在层数4 int haveC... 阅读全文
posted @ 2012-03-16 13:27 Rafy 阅读(1485) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://pat.zju.edu.cn/contests/pat-practise/1003这道题目是让求图中两节点之间的最短路径条数,同时求出这些最短路径中权值相加最大值,可以通过修改Dijkstra算法解题,不过我用的是深度优先搜索,书上总是说递归的程序比非递归程序容易看懂,而且逻辑也符合正常思维方式,可我却对递归结构很不感冒,确实,递归随随便便5行代码,可能用栈需要20+行才能模拟出来,但是我还是偏好于非递归实现,至少我觉得这个符合自己的思维习惯,话说回来,不用DJ,而采用深搜解这道题,也是因为深搜更容易想到而且能够想通,毕竟,暴力是蛮荒时代的本色,而能想出巧力的头脑都是苹 阅读全文
posted @ 2012-03-16 10:34 Rafy 阅读(1584) 评论(0) 推荐(0) 编辑

2012年3月15日

摘要: 这道题的题目链接:http://pat.zju.edu.cn/contests/pat-practise/1002题目很简单,就是模拟两个多项式的和,指数相同则系数相加,最后将结果按输入时的格式输出,输出时应该按照指数递减排序,而且,这道题后面3个案例有陷阱:不要输出系数为0的项,计算项数总数目的时候也不要计算这些系数为0的项,如果A和B中某个指数项的相应系数均不为0,当然要相加,但不要马上存入结果多项式中,应该判断此时的系数和是否为0,如果不为0,再存结果;否则,这一项忽略掉,不要存储,也不要使总数目加1,这个小细节让我WA了2次。 1 #include <stdio.h> 2 阅读全文
posted @ 2012-03-15 12:57 Rafy 阅读(2626) 评论(1) 推荐(1) 编辑

2012年3月11日

摘要: 昨天下午的热身赛D题---《旅游啦》,刚开始以为是要先求单源最短路径,于是呼呼啦啦把DJ的算法搬出来实现,完了后才发现不需要这么做,题目其实是想考察图的最优代价深度优先搜索,无奈最后卡在了回溯时的代价求和。那道题以后再去A掉,现在先写这个最短路径,关于图的各种应用算法,考研时也要求掌握,不过离上机实现还差一点,Dj的算法实际就是贪心在图论中的应用,使用final[i]记录编号为i的结点此时是否和源点在同一集合中,使用dist[i]记录从源点到i结点的当前最短路径长度,不过这道题另外增加了路径花费,于是把dist封装成结构体,这无关技术,不必赘述,用pre[i]记录寻找到i结点时的前置结点,可根 阅读全文
posted @ 2012-03-11 09:45 Rafy 阅读(672) 评论(0) 推荐(0) 编辑

2012年3月10日

摘要: 今天建立了自己的新博客,只是因为cnblogs更适合于保存曾经写过的代码,以后A题想记录下来的点点滴滴都会写在这上面,希望自己能一步步坚持下去...以前接触过DP的题,但都是知难而退,大二有过动态规划的课,但貌似毫无例外的逃掉了,昨晚重拾算法书,好好看了看,有点领悟,于是把这道入门级别的动态规划题A了。其实动态规划的基本思想很简单,就是分解问题时,重复的子问题个数是多项式级别的,但是如果用上递归求解,则规模瞬间增至指数级别,在OJ上常常TLE,于是,动态规划引入了备忘录方法,简单说来,就是建立一个2维表格,记录下每次求解的子问题答案,到需要这个答案时,可以用2维表的纵横坐标随机查找到,这个查找 阅读全文
posted @ 2012-03-10 10:55 Rafy 阅读(773) 评论(0) 推荐(0) 编辑