07 2014 档案
题解 最短路问题 POJ 2502
摘要:题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-1,-1隔开,要求花费的时间最少。做法:用Dijkstra算法。数据类型为double。代码:#include #include #include #include #define IN... 阅读全文
posted @ 2014-07-31 16:33 一锅土豆 阅读(121) 评论(0) 推荐(0)
题解 最短路问题 POJ 2387
摘要:题意:T组数据:给两个点之间的距离,求1到N的最短距离。做法:Dijkstra算法。水题。代码:#include #include #include #define INF 0x3fffffffusing namespace std;const int MAX=1010;int a[MAX][MAX... 阅读全文
posted @ 2014-07-31 12:12 一锅土豆 阅读(99) 评论(0) 推荐(0)
题解 最小生成树 POJ 1861
摘要:题解:这是一道求最小生成树的题目。有kruskal算法和prim算法这两种解决最小生成树问题的算法。题意是说有n个点(2#include #include #include #define INF 999999999using namespace std;const int MAX=6000;int... 阅读全文
posted @ 2014-07-30 17:24 一锅土豆 阅读(190) 评论(0) 推荐(0)
题解 最小生成树 POJ 2395
摘要:题解:有N个农场和M条路,每条路距离为Li。求小女孩从农场1遍历遍历所有农场的最小边长。做法:prim最小生成树代码:#include #include #include #define INF 999999999using namespace std;const int MAX=3000;int ... 阅读全文
posted @ 2014-07-30 15:23 一锅土豆 阅读(87) 评论(0) 推荐(0)
题解 最小生成树 POJ 1751
摘要:题意:给N和N个城市的坐标,M个两个城市间已搭建的桥,求用最少的距离搭桥使N个城市连接在一起。做法:用prim最小生成树,和并查集。将每个节点的父亲节点记录下来用于输出。代码:#include #include #include #define INF 0xFFFFFFusing namespace... 阅读全文
posted @ 2014-07-30 14:08 一锅土豆 阅读(105) 评论(0) 推荐(0)
题解 拓扑排序 POJ 3687
摘要:题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小。(先保证1号球最轻,其次2号……)分析:拓扑排序,注意根据题的要求,要先保证1号球最轻,如果我们由轻的向重的连边,然后我们依次有小到大每次把重量分给一个入度为0的点,那么在拓扑时我们面... 阅读全文
posted @ 2014-07-29 19:24 一锅土豆 阅读(148) 评论(0) 推荐(0)
函数库 拓扑排序
摘要:void toposort(int n){//该方法将优先队列(每次取出最大值)和拓扑排序结合 int i; priority_queue q; for(i=1;i s; int i; for(i=0;i1) flag=1; t=s.... 阅读全文
posted @ 2014-07-29 16:39 一锅土豆 阅读(174) 评论(0) 推荐(0)
题解 拓扑排序 POJ 1094
摘要:题意:给你一些大写字母间的偏序关系,然后让你判断能否唯一确定它们之间的关系,或者所给关系是矛盾的,或者到最后也不能确定它们之间的关系。分析:用拓扑排序:1.拓扑排序可以用栈来实现,每次入栈的是入度为0的节点。1.拓扑排序的结果一般分为三种情况:1、可以判断2、有环出现了矛盾3、条件不足,不能判断.2... 阅读全文
posted @ 2014-07-29 12:08 一锅土豆 阅读(248) 评论(0) 推荐(0)
题解 树状数组 POJ 2352
摘要:题意:见线段树 POJ 2352代码:#include #include #include using namespace std;const int MAX=200000;int bit[MAX],a[MAX];int i,n;int sum(int i){ int s=0; whil... 阅读全文
posted @ 2014-07-28 12:53 一锅土豆 阅读(94) 评论(0) 推荐(0)
函数库 线段树lazy标记
摘要:如果在题目中使某个区间所有元素的对应值*x或+-x,直接用线段树对每个元素进行计算,时间复杂度升高为nlogn,而用lazy标记可以减小时间复杂度。假设需要对某区间+num;void pushup(int p){//数值向上传递 dat[p]=dat[2*p]+dat[2*p+1];}void... 阅读全文
posted @ 2014-07-26 18:42 一锅土豆 阅读(152) 评论(0) 推荐(0)
函数库 线段树&并查集
摘要:建造线段树void build(int p,int l,int r){ if(l==r) {dat[p]=a[l];return;} int mid=(l+r)/2; build(p*2,l,mid); build(p*2+1,mid+1,r); dat[p]=max(... 阅读全文
posted @ 2014-07-26 15:26 一锅土豆 阅读(139) 评论(0) 推荐(0)
题解 线段树 POJ 2352
摘要:题意:给出n个点的平面二维坐标,对于每个坐标,如果这个坐标跟(0,0)形成的矩形内包含的点数为 k (包含边界,但不包含坐标本身),那么这个坐标就是 level k。输出 level 0 – leveln-1的点数分别是多少。n个点按照纵坐标y升序给出。做法:见代码。代码:#include #inc... 阅读全文
posted @ 2014-07-25 11:43 一锅土豆 阅读(123) 评论(0) 推荐(0)
题解 并查集 POJ 1182
摘要:题意:三类动物A、B、C,A吃B,B吃C,C吃A。给出K句话来描述N个动物(各属于A、B、C三类之一)之间的关系,格式及意义如下:1X Y:表示X与Y是同类;2X Y:表示X吃Y。K句话中有真话有假话,当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1)当前的话与前面的某些真的话冲突,就是... 阅读全文
posted @ 2014-07-24 15:17 一锅土豆 阅读(102) 评论(0) 推荐(0)
题解 并查集 POJ 1988
摘要:题意:有N(N#include using namespace std;const int MAX=30000;int par[MAX+10],total[MAX+10],under[MAX+10];int get(int a){ if(par[a]==a) return a; ... 阅读全文
posted @ 2014-07-24 15:12 一锅土豆 阅读(146) 评论(0) 推荐(0)
题解 并查集 POJ 1611
摘要:题意:nn个学生分属m个团体,(0#include using namespace std;const int MAX=30000;int par[MAX+10];int total[MAX+10];int getparent(int a)//获取a的根{ if(par[a]!=a) p... 阅读全文
posted @ 2014-07-24 14:59 一锅土豆 阅读(91) 评论(0) 推荐(0)
题解 简单动归 POJ 1157
摘要:题意:给N个不同的花,和M个花瓶,不同的花放在不同的花瓶内有不同的美观度。 求放入N个花后,最大美观度为多少?做法:用f[i][j]来表示前i朵花放在前j个花瓶的最大美观度,有两种情况: 1.f[i-1][j-1]加上当前值。 2.不加当前值。代码:#include #include #incl... 阅读全文
posted @ 2014-07-21 17:09 一锅土豆 阅读(98) 评论(0) 推荐(0)
题解 二分基础 POJ2456
摘要:题意:有N个牛舍排在一条线上,坐标分别为X,求把C个牛各放入一个牛舍时最大化的最近的两头牛之间的距离。做法:用二分法,和贪心法。将距离分割,判断最小距离为d是能否满足条件,最终选取最大值。代码:#include #include #include using namespace std;int n,... 阅读全文
posted @ 2014-07-19 16:39 一锅土豆 阅读(109) 评论(0) 推荐(0)
题解 完全背包 HDU 1114
摘要:题意:给T组数据,给出一个存钱罐存钱前后质量,再给出N种放入的钱币的币值和重量,不计数量,求使得该存钱罐达到之后质量的最小存储金额。做法:用完全背包。建立一个数组,用无限大的一个值初始化每个元素,并使f[0]=0;用完 全背包公式即可得出答案。代码:#include #include #includ... 阅读全文
posted @ 2014-07-18 21:30 一锅土豆 阅读(94) 评论(0) 推荐(0)
题解 深搜 POJ 3009
摘要:题意:溜石游戏。在一给定大小的矩形冰面上,散布若干石块,给定石头的初始位置和终点,求从起点到达终点的最小步数,超过10次则视作不可达。其中规则如下,若石头与石块有相邻则不能向该方向滑动;每次溜石只能到达有石块的地方,且将其立即敲碎;若出界则视作失败。思路:1.建立两个数组作为方向数组。 2.在深搜函... 阅读全文
posted @ 2014-07-17 14:12 一锅土豆 阅读(112) 评论(0) 推荐(0)
题解 简单限行dp 杭电OJ 1003
摘要:题意:给T组数据,求每组数据序列和最大的序列,输出最大值和起止位置。做法:建立一个数组a[n]记录数据,f[n]记录到该点时的最大和;递推可得,如果f[n-1]>=0,f[n]=f[n-1]+a[n];反之,f[n]=a[n];代码:#include #include using namespace... 阅读全文
posted @ 2014-07-16 17:58 一锅土豆 阅读(174) 评论(0) 推荐(0)
题解 二分基础 POJ2785
摘要:题意:给A,B,C,D四组长度相同为n的数组,在每个数组中分别找一个数a,b,c,d使得a+b+c+d=0。问一共有多少组这样的数据?做法:将A和B左右数组排列相加的所有情况并放入vector1中,C和D的也按上述方式放 入vector2中。在v1中用二分查找所有和v2中元素相加为0的数。代码:#i... 阅读全文
posted @ 2014-07-16 10:43 一锅土豆 阅读(126) 评论(0) 推荐(0)
函数库 vector&二分查找&迭代器
摘要:vector成员函数1)、vecto v; //创建一个空的vector对象,这个对象的元素的类型为T,T是需要指定的。2)、vector v(n); //创建一个vector对象,v.size()为n, 每个元素的值都会是系统默认的值,如果T是类,就会是默认构造函数来初始化。3)、vector v... 阅读全文
posted @ 2014-07-15 22:40 一锅土豆 阅读(881) 评论(0) 推荐(0)
题解 深搜 POJ 1321
摘要:题意:在一张形状不规则的棋盘上(用#表示棋盘位置,. 表示非棋盘位置),要放置N个 棋子,且不同行不同列。问有几种放法?做法:首先做出正方形规则棋盘放个数为边长的棋子的算法, 再加上坐标为“#”才能放的限制, 最后在函数中增加一个没有回溯法的递归用于当棋子数量小于边长时。代码:#include #i... 阅读全文
posted @ 2014-07-14 19:09 一锅土豆 阅读(104) 评论(0) 推荐(0)
题解 广搜记录路径 POJ 3984
摘要:题意:定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找... 阅读全文
posted @ 2014-07-14 17:03 一锅土豆 阅读(164) 评论(0) 推荐(0)
题解 广搜 POJ 3278
摘要:题意:在X轴上,有两个点(0#include using namespace std;queue que;int num=0;int n,k;int m,i;int sum[100000];void dps (int k){ m=que.size(); for(i=0;i0&&sum[... 阅读全文
posted @ 2014-07-14 16:45 一锅土豆 阅读(146) 评论(0) 推荐(0)