摘要: 原文出处:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k... 阅读全文
posted @ 2011-11-15 21:54 celia01 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 上次做poj 1067的取石子游戏,只用到了whthoff博弈,未涉及到取石子的异或方法,今天重新搜索,整理了一遍。搜罗各种资料,加上自己整理,终于成篇啦!……噼里啪啦取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以, 阅读全文
posted @ 2011-11-15 21:36 celia01 阅读(9093) 评论(2) 推荐(9) 编辑
摘要: 题意:有a、b、c三个人同时工作,三个人做不同的任务需要不同的时间,但最后要求三个人做事情的总时间相同,输出做完所有任务需要的最少时间,如果无法达到三个人总工作时间相同,则输出“No”当时一股脑筋觉着是最大流或者其他图论的东西,然后也往dp上想过,就连状态表示都没想出来。后来借鉴了一下大牛们的做法,标准做法应该是bfs所有可能情况,然后再一一帅选。这个bfs好久没写过了,暂时就没写。还有一种特别巧妙的方法:#include#include#include#includeusing namespace std;#define maxn 250 //maxn设为250是保证250>=120* 阅读全文
posted @ 2011-11-15 21:28 celia01 阅读(318) 评论(0) 推荐(0) 编辑