poj
文章平均质量分 73
zxy_snow
这个作者很懒,什么都没留下…
展开
-
poj 3278 Catch That Cow(第一道广搜题,(*^__^*) 嘻嘻……)
这两天因为想学搜索,所以把栈和队列给好好学了,看书学搜索。。。那《算法导论》和《数据结构》都是把搜索运用到图上,而且给的还是伪代码,不给具体例子,我怎么拿图实现啊??!!好吧。找题。。。找某亮百度空间滴~他做的第一个是机器人那个,因为是中文题,看着好不习惯。。。看第二道英文题,抓住那头牛??额。好久没在北大站上做题了,界面好难看好难看啊,比浙大的还难看。。。还是喜欢poj(百练)的风格~废话不多说了。搜索是吧,广搜,本来觉得还要把时间给存上,后来发现某亮代码上没有比较时间的,问之,理解了。广搜搜到的第一个人原创 2010-07-15 20:53:00 · 4011 阅读 · 4 评论 -
zoj 1005 Jugs || poj 1606 (广搜做法~~~~)
第二道广搜题。目前所写的最长的代码!!!纠结一天了!!!哎。这个题目。还有数学解法的,数学的改天再研究,先说广搜做法。本来根据昨天的那道题,广搜基本已经掌握了,遇到这题还是想了会。因为要控制两个数,还要记录位置。要用队列,想了会,本来想用两个队列,后来想想,如果一个队列按顺序的话就可以了,先出A后出B。关于记录位置这个,本来觉得自己想法还是很好的,用一个数字记录,即到最后的那个数字每个位上的数字代表一个操作,我采用X*10+y。。。后来发现这是个很大的弊端!!!因为整型有范围啊,所以最多有10位,也就是我原创 2010-07-16 21:57:00 · 2378 阅读 · 2 评论 -
zoj 1879 || poj 2575 Jolly Jumpers(水~)
意思就是,输入一个数n,然后输入n个数,两两之差的绝对值是不是从1到n-1。。。把1到n-1出现一遍就OK了。刚开始还以为得按顺序出现。。。查了查那个take on。。。米有这含义。。。这个博客纯粹当作业本了。。。好水的都发到这。。。就这样吧~~~~~#include #include #include #include int diff[3002];int main(void){ int n,x,y,check,i; while(scanf("%d",&n)!=原创 2010-07-21 18:08:00 · 2211 阅读 · 2 评论 -
poj 1163 The Triangle(第一道DP~~~~)
<br />刚刚才知道。。。DP就是动态规划啊。。。害我以为DP是多高深的东东。。。<br /> <br />一直不理解。。。这道题基本理解了,基本照抄的。。。偶是看着例子理解的。。这个就是第一个例子。。。<br /> <br />郁闷,还是多做做题哈~~~<br /> <br />输出一个三角形从上到下的最大和。。。和树差不多哈~<br /> <br />用递归的话,会重复计算,所以用动态规划啦~将计算的结果保存,避免重复计算~<br /> <br />因为我也刚开始学。。有些地方解释不好。。。见谅啦~以原创 2010-07-23 21:17:00 · 1166 阅读 · 0 评论 -
poj 1661 Help Jimmy
<br />DPDPDPDPDPDPDPDP。。。。<br /> <br />强大的DP。。。<br /> <br />搜的资料上有讲解这题的,一直没看懂,搜了好多人的代码,比较看来,还是资料上的好点。基本完全照抄了。中间还搬错的有,害我找了好长时间。。把那y改成x就OK了,崩溃!<br /> <br />怎么说呢,这种方法还凑合,会思考下这一步为什么这么做,因为DP还是不熟练,自己写的话写不出来。。。<br /> <br />这道题求时间最短,把这个问题分解为,左端到达低端时间最短时间,和右端到达低端最短原创 2010-07-28 14:33:00 · 3067 阅读 · 12 评论 -
zoj 1298 Domino Effect || poj 1135(zoj排名第二!!泪奔!!)
纠结了昨天一下午外加晚上快睡觉前的一段时间外加今天上午的一个小时,这道最短路径的题终于AC啦!!!泪奔!!!我想想该怎么说这个算法呢。恩。这道题是寻找多米诺骨牌的最终停下的位置,从牌1开始,如果1连接条路,两条路可以同时开始倒,以后也是,如果key点连接多条路,到达key点时,连接的所有路都开始倒。我的想法是:1、用dijkstra找最短路径,从这些最短路径中寻找最长的路。2、寻找三角形。比如下面这个图(我画的哦~~)黑色数字代表key点,红色代表边长。你所需做的工作就是,从2开始找与2连接的点,距离为1到原创 2010-07-30 10:35:00 · 2316 阅读 · 11 评论 -
zoj 1857 || poj 2607 Fire Station(纠结!!!)
这个题哈,做了一星期才把zoj的测试数据给过了。。。悲剧啊悲剧。。。最初留这题的时候,开始大家题都米看懂,导致做一天多了,按错的方向来了。。崩溃。浙大的要求是1秒,北大5秒内。理解题意后改改,用dij+邻接矩阵,自己机子跑了8秒多。。。交到北大上,3秒多,过了。后来CW说用邻接表写,我那个纠结啊。。。我不喜欢链表啊不喜欢!!!觉得挺麻烦的,没办法,硬着头皮上吧!居然还写过了!提高到了2秒多,浙大站上依然TLE。再然后,他们几个都用SPFA在浙大上写过了,弄得我也想去看SPFA,然后捏。。CW说用优先队列写,原创 2010-08-07 21:01:00 · 1714 阅读 · 2 评论 -
zoj 1133 || poj 1142 Smith Numbers
水题。但是纠结了好长时间。题意没理解完全。。。悲剧啊悲剧。最后ZOJ过了,poj死活不过。。。编译错误什么什么的。冰心还是比我先做出来。。。哎。最近刷水题能力越来越弱了。。。#include #include #include int main(){ int a[20005],b[1000],prime[20005]; int i,j,p=0,q=0,k,sum=0,flag,temp; long long n,num; a[0] = 0;原创 2010-08-08 18:54:00 · 1473 阅读 · 0 评论 -
zoj 1418 || poj 1686 Lazy Math Instructor(等价表达式)
AC了!!!!!纠结了好几天!!!终于在TLE N次,SF N次。。后 AC了!! 0ms 160KB 位居ZOJ第二!!!(不过zoj交的人少。。。)这个题目一般做法都是把字母替换成数字然后判断,化简的话,我觉得我肯定做不来。。刚开始写的时候,好纠结,后来看看书,人家的方法挺好的,就是判断优先级很麻烦,照着书上的来,弄了个二维数组判断优先级,效果不错。。。就是后来的时候数字进栈出栈的时候又问题,应该把结果都保存成整型呀。。不能用char。再然后TLE是因为要用gets,因为里面有空格或者tab。。悲剧,没原创 2010-08-13 12:09:00 · 3778 阅读 · 8 评论 -
zoj 1333 || poj 1545 Galactic Import(Dijkstra~)
<br />看了半天,题目理解错误咧。。。看了人家的代码才理解。。。<br /> <br />这个题目是让求某个星球到地球(*)货物的最大值。。货物中转一次要减少5%。。开始理解成,经过一个星球,那个星球的货物也要运输到地球了。。。则求最小的中转次数即可。。。<br /> <br />哈,提交了两次,一不小心把党的两个号给挤下去啦,嘻嘻~~NO.2 NO.3~他貌似用的广搜。。。<br /> <br />#include <stdio.h>#include <memory.h>#include <s原创 2010-08-14 13:05:00 · 1670 阅读 · 1 评论 -
zoj 1092 || poj 2240 Arbitrage(Floyd)
CW说用DIJ能做出来,我死活做不出来。。。就用了广大同胞用的Floyd,现学现卖,就三个循环,理解了下。引用下网上某位大侠的一段代码For k←1 to n do // k为“媒介节点” For i←1 to n do For j←1 to n do if (dist(i,k) + dist(k,j) 意思就是,把 i 和 j 的距离缩短到最小。。。就像一个三角形(不过不符合两边之和大于第三边罢了),寻找一个顶点,更新i 和 j的距离,如果这两边之和比原来的小,更原创 2010-08-13 21:07:00 · 1597 阅读 · 3 评论 -
zoj 1942 || poj 2253 Frogger(继续DIJ。。)
<br />求青蛙GG能跳到青蛙MM路线上的最小跳。。。<br /> <br />与1952很雷同很雷同。。<br /> <br />今天上午看了4道题。。。AC两道了。。。歇歇,洗澡去~~<br /> <br />#include <stdio.h>#include <stdlib.h>#include <math.h>#include <limits.h>#include <memory.h>#define N 202#define F 0.000000001double d原创 2010-08-29 15:15:00 · 1411 阅读 · 0 评论 -
zoj 1372 || poj 1287 Networking ( prim || kruskal ~)
和1406基本一样 不过用prim输入的时候 加了个判断,因为可能有重复的边,要最小的那条。kruskal写的还是不熟练!!#include #include #include #define N 55using namespace std;int n,m,map[N][N];int cmp( int x,int y){ return x-y;}void input(){ int i,j,x,y,p,len; cin>>m; for(i=1; i> x原创 2010-09-15 21:38:00 · 1869 阅读 · 0 评论 -
poj 1258 Agri-Net(Kruskal || Prim )
prim熟练了 就没用prim写,这次用kruskal熟练了不少~~下次继续~我怀疑它的数据中 输入的矩阵不是对称的。。。。#include #include #include #define N 110using namespace std;struct node{ int x,y,len;}farm[N*N];typedef struct node NODE;int cmp( const void *a,const void *b){ return ((原创 2010-09-16 12:48:00 · 2305 阅读 · 0 评论 -
poj 2485 Highways(Kruskal!)
<br /> <br />哈哈~~这次写kruskal 完全自己写的 没有参照以前写的 哈哈~~不容易。。。<br /> <br />求出得出的最小生成树上最长的路长,小变形而已。HITS提示用scanf。。我试试cin,超时了,改成scanf AC。。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#define N 510using namespace std;int n,p,pre[N];原创 2010-09-16 13:31:00 · 1294 阅读 · 0 评论 -
zoj 1914 || poj 2349 Arctic Network(Prim~)
给你点的坐标,计算最小生成树,然后算去掉给定数目的树上的最长边后的那条边。我用的PRIM,先把边算出来,然后快排,再取题目要求的那条边。我用qsort老不对。。。用sort对了。。。排名很靠前,嘻嘻,不过,运行时间枕的是靠RP。。。#include #include #include #include #include #include #include using namespace std;const int N = 501;int n,sat,map[N][N];原创 2010-09-25 12:27:00 · 1882 阅读 · 1 评论 -
zoj 1926 || poj 2328 Guessing Game(水~)
<br />就一个游戏,猜数字,你说一个数字,可能大了或者小了,最后再猜一次~控制下区间,如果在区间里那可能就是诚实的,不在的话肯定说谎了~水题,输入有点小问题。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <limits.h>using namespace std;int main(void){ int n,begin = 0,原创 2010-11-26 23:35:00 · 2142 阅读 · 0 评论 -
zoj 1221 || poj 1603 Risk(Floyd~)
<br />终于瞅见一道最短路的题了~~~哈哈~~<br /> <br />这个题目好长啊,好长啊。。。<br /> <br />挺不容易的 读完题。。。其实没仔细读,基本看了看样例输入输出还有那个图就知道啦~~呵呵<br /> <br />就是求两点中间的最少的城市个数,That's all.<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namesp原创 2010-11-27 14:52:00 · 2075 阅读 · 2 评论 -
zoj 1542 || poj 1861 Network(MST = = Kruskal~)
<br />很早以前WA掉的,今天改都没改交了,A了,我很费解,很愤慨 = =。。<br /> <br />不解释。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>#include <limits.h>#define N 1001using namespace std;struct edge{ int x,y,len;}hub[15001];原创 2010-11-27 15:49:00 · 1717 阅读 · 0 评论 -
zoj 1259 || poj 1363 Rails(栈~!)
<br />类似hdu1022,比1022还简单 = =。。。<br /> <br />题意没耐心读下去,以至于理解错误 = =。。。<br /> <br />从A的火车顺序是1、2、3。。。N。 到达B的序列是输入的序列。<br /> <br />栈的应用。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <stack>using namesp原创 2010-11-28 17:39:00 · 2133 阅读 · 0 评论 -
zoj 2777 || poj 3090 Visible Lattice Points
<br /> <br /> 求未被挡住的点的个数。<br /> <br />挡住是 从0 0 出发的射线在到这个点之前 已经过某个点 则这个点就被挡了。<br /> <br />开始就是想找规律 结果发现不好找。YM。看别人思想,想通了,只要X Y 互质 就肯定不会被挡住。这么强大。。。<br /> <br />直接算是否互质了,算一半就可以了。<br /> <br />党的做法是,类似筛素数,一圈一圈忘外招,如果没被标记的,就是未被挡住的,然后把这一条射线上的点都标记下。。。时间比我的短好多,好强大。。原创 2010-12-01 23:22:00 · 1044 阅读 · 0 评论 -
zoj 1871 || poj 2590 Steps(数学题 = =)
<br />看这题,第一反应是,广搜嘛。<br /> <br />写了 = =MLE了。看了下范围2^31,我去啊。。我还开了俩队列,那绝对超了啊。 = =。。<br /> <br />后来想了想,数学方法,要么比前一个步子大,相等,或者小。就一直让它递增,以中间某个点对称,然后递减。<br /> <br />把这个序列算下,和到达点的差值,一定可以在序列里再找到一个步子,重复走下这个步子。<br /> <br />比如50<br /> <br />1 2 3 4 5 6 7 6 5 4 3 2 1 1 。原创 2010-12-02 13:49:00 · 1603 阅读 · 0 评论 -
poj 3628 Bookshelf 2( 0-1背包。)
搜的01背包题。这个相当于体积和价值一样大的01背包。我做的可能麻烦了点。貌似有搜索过的。还有其他的状态方程的。我DP做的少。。。只会这个状态方程了。。。YM。将所有背包容量情况#include #include #include #include #include #include using namespace std;int w[1000002],bag[20000005];int main(void){ int n,c; while( scanf("%d原创 2010-12-03 13:28:00 · 1725 阅读 · 1 评论 -
poj 3627 Bookshelf(水~)
<br />类似校赛抓兔子。排序后贪心即可。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <algorithm>using namespace std;int h[20005];int main(void){ int n,c,i; while( scanf("%d %d",&n,&c) != EOF ) { in原创 2010-12-03 13:58:00 · 1992 阅读 · 0 评论 -
zoj 1986 || poj 1631 Bridging Signals(最长上升子序列N*logN)
<br />和ZOJ 2316 差不多,不过这个是用单调队列+二分优化了,不优化过不去。<br /> <br />单调队列是保证里面元素是单调的,这样的话,取其中最大的值是O(1)的,如果有数比队尾元素小,就用二分查找,找到它的位置替换。<br /> <br />原理详见http://blog.csdn.net/Hashmat/archive/2010/09/14/5883605.aspx<br /> <br />我的二分写得比较纠结,改了好久才对 = =。。。<br /> <br />#include <原创 2010-12-06 12:02:00 · 1017 阅读 · 0 评论 -
zoj 1047 || poj 1111 Image Perimeters(DFS water~)
<br />跟上一道差不多,上一道是求树的个数,这个是给你树的其中的一个点,求圈成这棵树的周长。<br /> <br />我先把这棵树给找出来,然后想怎么算周长啊。。。这么悲剧。。<br /> <br />想了半天没有好方法,看POJ上讨论版了。。。算这棵树点旁边有几个0就可以了,这个旁边是指上下左右点。真聪明啊。。。哎,惭愧。。<br /> <br />POJ1111讨论版很有意思啊,ACMERS对这个题号很纠结,哈哈,光棍节。。。<br /> <br /> <br />/* * */#inc原创 2010-10-17 22:07:00 · 1634 阅读 · 1 评论 -
poj 2386 Lake Counting(DFS 杂这么多这种类型的水题啊。。。。)
<br />同1562 找有几个连通的区域,8个方向的搜索。<br /> <br />从昨晚开始做了好几道这种类型了,现在已经很熟练了哈~<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int n,m;int map[110][110],visit[110][110];int cou,fi,fj;int dir原创 2010-10-18 12:58:00 · 3065 阅读 · 0 评论 -
zoj 1089 || poj 2245 Lotto(DFS~)
好吧 这题搜的DFS。。。自己写的,自己想的总是有错,改了好多好多都不对。。。哭啊。。。对DFS还是理解不透。。。呜呜。。。交poj的时候,看讨论版 好多神奇的方法。。。6层循环 我晕。。。确实可以。。。。我了个去。。#include #include #include #include using namespace std;int n,num[14],put[14];void DFS(int d,int current){ if( d > 6 ) { for(原创 2010-10-17 18:38:00 · 1924 阅读 · 0 评论 -
poj 1154 LETTERS(DFS水!)
<br />类似seeding那题。<br /> <br />这个是求从左上角开始走,上下左右搜索,没走过的可以走,找最长的路径。<br /> <br />mmax应该初始化成1,这点WA了几次。。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int visit[30];int n,m;int step[8]原创 2010-10-17 19:33:00 · 2357 阅读 · 0 评论 -
zoj 1709 || poj 1562 Oil Deposits(DFS 好吧,目前我就是专门找水题做的。。。)
<br />觉得有点像并查集啦。<br /> <br />以前的DFS水题都是搜的四个方向,现在搜八个了。。。FT。。<br /> <br />感觉这个不是太像DFS。。。没有回溯塞。。。觉得就是递归。。。额。。<br /> <br />@的八个方向有@的并一起,输出有多少个。。额。。多少棵这样的树吧,恩,可以这么说。<br /> <br />#include<stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>u原创 2010-10-17 21:19:00 · 1606 阅读 · 0 评论 -
poj 3620 Avoid The Lakes(DFS超水。。)
<br />水啊 水。。今晚做的这几道都是一种类型的 呵呵<br /> <br />10分钟搞定~睡觉去,不解释。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int map[110][110],visit[110][110];int m,n,num,mmax,fi,fj,cou;int dir[8] = {0,原创 2010-10-17 23:29:00 · 2050 阅读 · 0 评论 -
zoj 1025 || poj 1065 Wooden Sticks(DP做法)
<br />最长XX子序列小变形。<br /> <br />学习了下,详见 http://blog.csdn.net/wmbol/archive/2010/04/05/5450952.aspx<br /> <br />还有党说的删除最大串,然后再DP,再删再。。。这里的DP就是类似找最长XX子序列了。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include原创 2010-12-09 17:38:00 · 1758 阅读 · 3 评论 -
zoj 1962 || poj 2413 How many Fibs?(大数~)
<br />给你两个数a,b (a<=b )求 [a,b]区间上有多少个斐波那契数。<br /> <br />Hint:这个斐波那契数列开头是 1 2 3 5 8。。。不是 1 1 2 3 5 8。。。<br /> <br />100位以内。 第498个斐波那契数是104位。<br /> <br />不难 就是繁。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>us原创 2010-12-10 20:02:00 · 1874 阅读 · 0 评论 -
zoj 1938 || poj 2249 Binomial Showdown(求二项式系数)
<br />就根据那个公式Cnk = n!/(k!*(n-k)!)<br /> <br />而且 Cnk == Cn(n-k)如果k > n-k k = n-k 不加这个的话会超时。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int main(void){ long long int n,k; // Mu原创 2010-12-09 23:09:00 · 1262 阅读 · 3 评论 -
poj 1321 棋盘问题 (DFS )
<br />贡献一次TLE WA。。。<br /> <br />修改后从170+ms降到了16ms。。。注释写得很清楚。。<br /> <br />萌萌让帮忙改稿子。。不解释了。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int map[10][10];int n,k,cou,sum;void input()原创 2010-10-21 23:47:00 · 997 阅读 · 0 评论 -
zoj 1711 || poj 1564 Sum It Up(DFS~~~去重~)
<br />给你一个数字n和一系列数字,不递减的,找出加和等于所给的n的方案。<br /> <br />要求输出也是按递减的,逆字典序。。。<br /> <br />先用DFS找出所有方案,存下,然后去重即可。<br /> <br />开始用的memcmp死活不对,好吧,我用笨方法,一个一个比较,重复的标记掉,剩下的就是需要输出的。<br /> <br />费了挺长时间的,郁闷。下次不能懒了!没有好办法之前,麻烦的就是最好的。。。<br /> <br />#include <stdio.h>#inclu原创 2010-10-22 23:22:00 · 2169 阅读 · 6 评论 -
zoj 1700 || poj 1577 Falling Leaves(BST应用)
<br />这两天一直在敲堆排,快排。。。这俩各敲了10遍左右了。。。初步计时,堆排3.5分钟,算导写法。<br /> <br />在算导上看了BST,感觉差不都了,开始写,开始写的非递归,死活不对,后来知道了,自己的非递归写法,节点和它的子节点建立不起来联系 = =最后改为递归写法。没有用malloc,不喜欢它 = =。。<br /> <br />这题我做完后再看题才看懂 = =。。。给你拆树的过程。。。去掉叶子节点的树,再去掉叶子节点。。。最后去掉根。所以做法就是倒着建立一棵二叉查找树。最后一个是根节点原创 2010-12-22 15:37:00 · 1849 阅读 · 0 评论 -
zoj 1899 || poj 2418 Hardwood Species(Trie~)
<br />字典树~!<br /> <br />之前写过一个纯比较的。。。看poj讨论版貌似应该可以过,但是一直WA = =。。。<br /> <br />昨天写了个字典树,找字典树的题,实在是没有其他的了,只好做这个吧。<br /> <br />这个树很好建,不繁,和昨天那个差不多。只不过这个包括大写还有空格,所以指针要开多点。按理来说,92够了 = =。。可是最低看到95才过。。。不晓得为嘛。。<br /><br /> <br />这个建立字典树,结构体里面存的是这个单词的个数,建的时候到末尾字母,那个原创 2010-12-25 16:49:00 · 1501 阅读 · 2 评论 -
poj 3630 Phone List(依旧Trie~)
<br />给你几个号码,判断是否其中有一个是另一个的前缀。<br /> <br />比如。 <br /> <br />911<br />9110000<br /> <br />那么911是9110000的前缀,输出NO。<br /> <br /> <br /> <br />思路是,用一个字典树存号码。输入一个插入一个。用malloc超时了,所以选择使用静态存储。<br />插入的时候,如果遇到节点flag不为0,那么说明已经有单词末尾到这个节点了,即已经有单词是现在插入单词的前缀了,标记下。<br />如原创 2010-12-26 10:55:00 · 1551 阅读 · 2 评论 -
zoj 2346 || poj 2001 Shortest Prefixes(Trie~!)
先看到poj的这个题了。昨晚看到的,昨晚睡觉想到一种方法,今天上午上自习了,中午回来敲了敲。。WA = =。想的是,如果不止有一个子指针为空,就继续找,直到,只有一个指针为空即可。样例都过不去 = =。理解了比如cabcabdcabde 那个cab三个字母都是只有一个指针为空的,可是,它是这三个的共有前缀,肯定不符合。好吧。又想一种做法。就是,遇到某个字母,结构体里面存的数++,这样的话,只有一个字母经过这儿的话,肯定是这个单词特有的(因为没有其他单词可以经过这个字母),记录下下标即可。如果没有找到,肯定是原创 2010-12-28 13:22:00 · 1498 阅读 · 2 评论