上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页
  2011年9月24日
摘要: hdoj 1257解决:贪心 首先按照 每颗导弹到来时的高度排序,若要配备最少的导弹拦截系统,一定是希望一个拦截系统装置可以拦截尽可能多的导弹,但是这些导弹必须满足先后顺序,后来的而且导弹高度低于前一个的可以共用一个系统,这样有多少满足条件的数字序列就是需要多少个导弹拦截系统装置。#include <iostream>#include <algorithm>#include <bitset>using namespace std;int n;struct node{ int id; int high;};node missile[100000];bool o 阅读全文
posted @ 2011-09-24 18:16 猿类的进化史 阅读(418) 评论(0) 推荐(0) 编辑
摘要: hdoj 2037贪心算法--活动安排问题模型使用贪心算法的关键是证明可以设用贪心:设E={1,2,3,...n}为所给出的活动的集合, 设集合A为原问题的最优解 ,由于按照活动结束时间已经排好序,所以第一个活动具有最早结束时间,将1加入集合A中,原问题将转化为对E中所有与活动1相容的活动进行安排的子问题, 并且E中最早的开始时间必须大于等于A中最晚结束时间,将原问题的规模缩小了,这样可以迭代的进行,A中最晚的结束时间是最后加入的活动的结束时间。#include <iostream>#include <algorithm>#include <bitset>u 阅读全文
posted @ 2011-09-24 08:01 猿类的进化史 阅读(1023) 评论(0) 推荐(0) 编辑
  2011年9月23日
摘要: 贪心算法就是总是做出当前看来最好的选择。即贪心算法并不从整体最优考虑,它做出的选择只是某种意义上的局部最优选择。可以用贪心算法解决的问题:1.交通路线的最短路径算法2.最小生成树算法3.集装箱装载问题的背包算法4.图的着色问题5.有限期的任务分配和计算机作业调度说明:若要用贪心算法求解某问题的整体最优解,必须首先证明贪心思想在该问题的应用结果就是最优解。贪心算法要素:1.贪心选择性质,指所求问题整体最优解可以通过一系列局部最优解的选择来达到。通常是以自顶向下的方式进行的。已迭代的方式作出贪心选择,每做一次贪心选择就将所求问题简化为了规模更小的子问题。2.最优子结构性质 ,当问题的最优解包含其子 阅读全文
posted @ 2011-09-23 20:28 猿类的进化史 阅读(646) 评论(0) 推荐(0) 编辑
摘要: poj 1475题目大意:给出一个地形图,S表示人的起始位置,B表示箱子的位置,T表示要把箱子推倒的位置,刚开始的时候没看到要的是推箱子步数最少,其次是人的步子数最小。解决:两个bfs,第一个bfs以箱子的位置为状态,箱子扩展到下一个状态扩展人的位置,最终的目的是箱子到达目标位置。刚开始的时候是定义了一个vis[25][25][25][25] 的四维数组来标记状态是否已经存在,但是wa,后来仔细想了一下,这样会把正确的枝剪掉,四维数组在两个bfs中用不行,若只有一个bfs还可以。最终还是选择了两个标记数组,但是别忘了在每一个bfs之前要清除标记#include <iostream> 阅读全文
posted @ 2011-09-23 10:11 猿类的进化史 阅读(405) 评论(0) 推荐(0) 编辑
  2011年9月19日
摘要: poj 3074 都说是用dance links等学了图论的最小覆盖,在回来看这个题吧。搜索未做:3983 3985 3523 2286 1190 3083 1753 1011 阅读全文
posted @ 2011-09-19 20:19 猿类的进化史 阅读(126) 评论(0) 推荐(0) 编辑
  2011年9月18日
摘要: poj 2248题目大意:给出一系列数的最后一个数,默认第一个数是1,求一系列数字,要求除第一个数外,其它的每个数都是前边两个数的和(可以是同一个数加上本身),求最少需要多少个数就能加到给定的数 ,输出,过程解决:bfs+路径记录,记录路径可以在结构体中加入当前地址,值,和从哪个扩展来的,三个数就够了。本题,最开始思考的时候,想着bfs一般都是要用到vis数组记录是否走过,以避免重复而导致陷入死循环, 但是,当用了vis数组后,新的问题来了,比如数n,有好多条路劲到达数n的,但是,如果第一个进队列下次遇到n不进队列了,会导致若最终求的是m,不一定第一个进队列的刚好是到m最短的,后来仔细想了下, 阅读全文
posted @ 2011-09-18 23:50 猿类的进化史 阅读(1923) 评论(1) 推荐(0) 编辑
  2011年9月17日
摘要: poj 2362题目大意:给出一些数,问你能不能把这些数,分成4堆,没堆的和相等解决:dfs+回溯,此题用的剪枝稍微少一些就不行#include <iostream> #include <cstring>#include <algorithm>#include <cstdio>#include <functional>using namespace std;int num[30],ave,n;bool found;bool vis[30];bool check(){ for(int i=0;i<n;i++)if(!vis[i]) 阅读全文
posted @ 2011-09-17 23:56 猿类的进化史 阅读(384) 评论(0) 推荐(0) 编辑
  2011年9月16日
摘要: hdoj 1166题目大意:解决:树状数组简单题,不解释#include <iostream> #include <cstdio>#include <cstring>using namespace std;#define L(x) (x<<1)#define R(x) (x<<1|1)#define M(x,y) ((x+y)>>1)int n;int c[50005];int lowbit(int x){ return x&(-x);}void updata(int p,int inc){ for(int i=p 阅读全文
posted @ 2011-09-16 19:10 猿类的进化史 阅读(310) 评论(0) 推荐(0) 编辑
  2011年9月14日
摘要: 8数码问题 问题简介: 所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8的八块正方形数码牌任意地放在一块3×3的数码盘上。放牌时要求不能重叠。于是,在 3×3的数码盘上出现了一个空格。现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊的排列。如下图表示了 一个具体的八数码问题求解。问题分析: 首先,八数码问题包括一个初始状态(START) 和 目标状态(END),所谓解八数码问题就是在两个状态间寻找一系列可过渡状态 (START->STATE1->STATE2->...->END)。这个状态是 阅读全文
posted @ 2011-09-14 19:16 猿类的进化史 阅读(2808) 评论(0) 推荐(0) 编辑
摘要: poj 2243题目大意:给出骑士的起始和终止位置,求出最少需要多少步子到达终点解决:本来上一道这样的题已经做过了,又遇见了就再复习下吧,上一道题是双向bfs,但是使用了stl中的queue,刚开始也是用的stl的queue但是157ms,想着还没有自己写过front,rear手工队列,于是改成了手工的,有想着改成循环队列吧,节省空间,又都改成了循环队列;复习下循环对列的知识:length=(rear-front+MAXSIZE)%MAXSIZE;入队:q[rear]=new node; rear=(rear+1) %MAXSIZE;出对:curnode=q[front]; front=(fr 阅读全文
posted @ 2011-09-14 18:55 猿类的进化史 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页