随笔分类 -  POJ进阶题单

这里面的题目就是POJ进阶题单的题解啦,题单都可以在网上找得到的。我会在hust的virtual judge上贴训练题,欢迎大家一起刷,加油!~
POJ 1836 双边最长上升子序列
摘要:马草AC了简直是各种爽啊,而且算法里只用了两次LIS,算法整体复杂度O(nlogn)真的是应了老乔那句至简至繁至简,思考了一整天,还是直接用两次LIS外加两个辅助数组就解决了问题思路就是,要真的深入地思考清楚这个问题,真的深入理解了LIS而不仅仅是套模板,套模板的结果就是把复杂度弄成O(n^2log... 阅读全文

posted @ 2014-06-12 10:00 码农之上~ 阅读(269) 评论(0) 推荐(0)

POJ 3267
摘要:dp经典关于这道题,我看了网上大量的资料,发现整体思路是对的,但是细节解释是错的(或者说不到位)Len = strlen(say); say是牛说的话,下面的word代表单词列表dp[i]表示从say中第i个字符开始,到第Len-1个字符(结尾处)这段区间所删除的字符数,初始化为dp[i]=len-... 阅读全文

posted @ 2014-06-11 04:49 码农之上~ 阅读(342) 评论(0) 推荐(0)

POJ 1276 完全背包
摘要:---恢复内容开始---这道题就是明显的完全背包题啦,只不过物品的重量和价值是一样的。我就是按照《背包九讲》中完全背包的思路,先把物品的数量 ni 按照1,2,4,8...的规律分解,然后直接用简单背包暴力数据比较小,10种物品,每一种最多1000个,cash 2 #include 3 using ... 阅读全文

posted @ 2014-06-09 22:19 码农之上~ 阅读(266) 评论(0) 推荐(0)

POJ 3080 KMP练手题
摘要:思路是枚举第一个字符串中所有长度大于三的字串,再用KMP在其他串中验证是否存在这个字串,取最长字母序最小者代码: 1 #include 2 #include 3 using namespace std; 4 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 16 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) ) 17 #def... 阅读全文

posted @ 2014-04-11 17:09 码农之上~ 阅读(167) 评论(0) 推荐(0)

POJ 3041 Asteroids
摘要:匈牙利二部匹配的裸题,算法思想我是懂了,但是代码为什么可以那样写我还没想明白。鉴于过几天要比赛了,所以先拿别人的模板来用。 1 #include 2 #include 3 using namespace std; 4 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 15 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) )16 #define repAE(p,q,i) for( ... 阅读全文

posted @ 2013-10-22 20:28 码农之上~ 阅读(181) 评论(0) 推荐(0)

HDU 1532 && POJ 1273 Drainage Ditches
摘要:首先要吐槽一下杭电,错误的代码都能过,而且这种情况不止一次了。第一次最大流,纪念一下。就是用的Edmonds-Karp,自己的模板,详细资料参考《算法导论》第26章最大流。题意就是给N条有向路径,M个节点,1为源点,M为汇点,求最大流裸题。直接上代码,代码中,最开始,我初始化和搜索中的范围都是[1,N],在HDU交,居然AC。后来在POJ WA地不明所以,才发现这个错误。注意判重边。 1 #include 2 #include 3 using namespace std; 4 #include 5 #include 6 #include 7 #include 8 #includ... 阅读全文

posted @ 2013-10-20 16:14 码农之上~ 阅读(279) 评论(0) 推荐(0)

POJ 线段树习题
摘要:转自人人:http://blog.renren.com/blog/253608280/431599824这两天做了几个线段树的题目 与大家分享 欢迎补充难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..)http://acm.pku.edu.cn/JudgeOnli... 阅读全文

posted @ 2013-09-11 08:31 码农之上~ 阅读(274) 评论(0) 推荐(0)

POJ 2253 Frogger
摘要:这道题就没什么好说的啦,直接dijstra最短路。把所有石头之间的距离求出来制图,dijstra最短路。上代码 1 #include 2 #include 3 using namespace std; 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) )11 #define repAE(p,q,i) for( int (i)=(p); (i)=(q); --(i) )14 #define range 21015 1.. 阅读全文

posted @ 2013-09-09 11:25 码农之上~ 阅读(138) 评论(0) 推荐(0)

POJ 3259 Wormholes
摘要:这道题也学到了不少东西。题目链接:http://poj.org/problem?id=3259题意就是一块地上有n个区域,m条路径,有w个虫洞,要你求能不能从某个区域开始然后经过某种路径,最后回到该区域,而此时的时间在离开的时间之前。明显的Bellman,可是如何处理呢?好吧,既然题意是说从某个区域,意思是图中只要有负环就可以了,而只要有负环那么Bellman算法中的n-1次松弛就必然能完成。所以关键在于检验是否能进行n-1次松弛。上代码 1 #include 2 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) ) 3 #defin. 阅读全文

posted @ 2013-09-09 11:24 码农之上~ 阅读(171) 评论(0) 推荐(0)

POJ 1860 Currency Exchange
摘要:这题还是学到了一点东西吧。题目链接:http://poj.org/problem?id=1860题意就是有N个货币兑换点,每个点提供A,B两种货币的兑换。假设现在手上有货币A,数量为Q,那么兑换成货币B的话就能得到(Q-Cab)*Rab 个B货币。初始货币为S,数量为V,求能不能通过一系列兑换,增加S的数量。这个就是最短路,用Bellman-Ford算法拉,松弛后看图中有没有正环(因为要增加货币数量)。不过不需要松弛n-1次,可以在松弛的过程中看,此时的图G能不能提供松弛的边,如果不能就直接跳出n-1的循环。关键在于松弛条件:dis[ fun[j].f ] - fun[j].c ) * fun 阅读全文

posted @ 2013-09-09 11:10 码农之上~ 阅读(242) 评论(0) 推荐(0)

POJ 1258 Agri-Net
摘要:裸的prim,不解释,直接上代码。 1 #include 2 #include 3 using namespace std; 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) )11 #define repAE(p,q,i) for( int (i)=(p); (i)=(q); --(i) )14 #define range 51015 struct node{16 int f,t,dis;17 ... 阅读全文

posted @ 2013-09-07 18:50 码农之上~ 阅读(164) 评论(0) 推荐(0)

POJ 2485 Highways
摘要:裸的prim,不解释,直接上代码。#include#includeusing namespace std;#include#include#include#include#include#define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) )#define repAE(p,q,i) for( int (i)=(p); (i)=(q); --(i) )#define range 510struct node{ int f,t,dis; node(){} node( int _f , int _t , i... 阅读全文

posted @ 2013-09-07 18:49 码农之上~ 阅读(143) 评论(0) 推荐(0)

POJ 1789 Truck History
摘要:裸的最小树。题目链接:http://poj.org/problem?id=1789题目意思就是,所有的物品标号都有唯一ID,从P衍生到Q的花费是PQ编号中在同一位置而字母不同的个数。直接用两层循环求出点对之间的最短路,krustra。上代码。 1 #include 2 #include 3 using namespace std; 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #define repA(p,q,i) for( int (i)=(p); (i)!=(q); ++(i) )11 #define repAE(. 阅读全文

posted @ 2013-09-06 21:45 码农之上~ 阅读(208) 评论(0) 推荐(0)

POJ 3026 Borg Maze
摘要:最小生成树的题,这道题做得我快吐了,必须总结一下。题目链接:http://poj.org/problem?id=3026一开始我就看错了题,以为我方在任意位置都可以分裂,直接导致想不出来。后来搜了下,才发现看错题了。题意就是给一个地图,要求从S开始,能经过所有A的最短路径。而且我方能够在S点或任意A点分裂成任意多个队列同时寻找A点。果断BFS+prim啊,用bfs求出S和所有A之间 点对的最短距离,在用prim就好了。不过方法很显然,不过我却TLE了好几次,都快恶心死了。原因是我bfs用的是queue,和node结构体,然后就各种TLE啊。后来全部改用数组就行了。事实证明数组比STL快得多。. 阅读全文

posted @ 2013-09-06 21:39 码农之上~ 阅读(320) 评论(0) 推荐(0)

导航