坐井观天

In the name of dream

导航

2012年6月26日

摘要: 题目链接:http://poj.org/problem?id=3411题目大意: 给定n个点,m条边(n,m<=10),每条边ai,bi,ci,pi,ri表示从ai到bi有边,付费方式两种: 1、 之前在ci点付费pi, 2、 到达bi点再付费ri; 求1到n的最小花费;分析: 纯属乱搞,状态( u, cost, node ),u表示当前节点,cost表示此时花费,node表示已经经过的点(二进制表示),用优先队列+bfs过。 开始tle了,后来干脆给每条边开了一个cnt计数,初始化为0,然后没访问边一次,cnt++,当cnt>20时不访问,居然ac了!!! 注意 pi <= 阅读全文

posted @ 2012-06-26 21:30 一毛_ 阅读(231) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=1724题目大意: 给定一个图,边有边权和费用,要求在给定总费用下,求从st到ed的最短路。分析: 开始考虑着dp,离散dp,后来发现这个很水,直接写了bfs+优先队列,居然1A; Discuss里面iSea神说到 逆着bfs用vector可以存边,我就是这样写的,可是我觉得本来就该逆着做,因为是求st到ed的最短路,那么理应以ed为出发点,不是吗? (这句话应该是不妥的,但是你这样做保证你ac此类题); 类似dijkstra的贪心,先贪距离,再贪费用,体现在优先队列的优先级上,具体见代码,另外我觉得这题还是数据弱吧,我连标... 阅读全文

posted @ 2012-06-26 20:33 一毛_ 阅读(263) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=2243题目大意: 给定一个8×8棋盘,问骑士在棋盘中走“日”,从指定点s到指定点e所需的最小步数;分析: 看A*算法的时候,作者引用了这个例题,并且写了个A*代码,咋一看是个floyd; 只需要把一步就可以走到的两点之间距离初始化为1,其余初始化为inf,然后跑一遍floyd就可以得出所有的最优解; Discuss里也有人说是纯数学题,还不理解。 另外这题用bfs也是一样的,见我的poj1915(n<=300)的bfs代码:poj1915 1 /*1915 Accepted 396K 94MS C... 阅读全文

posted @ 2012-06-26 16:20 一毛_ 阅读(211) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=2449题目大意: 给定一个有向图,求st到ed的第k短路。分析: 显然,我是看解题报告的。 1、逆向求所有点到ed的最短距离(Dijkstra,ed作为起始点); 2、A*,即建立一个优先级f[x]= h[x] + g[x]; h[x]作为当前搜索时的代价(即本题搜索中的实际距离),g[x]为估价函数,从当前节点移动到目标节点的预估费用,本题选1中所求的最短距离作为估价函数g,进行普通的bfs+优先队列就可以了,用cnt[]记录每个点出队列的次数,当cnt[u]>k就可以continue; 当cnt[u]==k && 阅读全文

posted @ 2012-06-26 13:53 一毛_ 阅读(679) 评论(0) 推荐(0) 编辑

摘要: 题目链接:http://poj.org/problem?id=3635题目大意及分析: http://hi.baidu.com/legend_ni/blog/item/c7525409cf8057f036d1229d.html http://ip96cns.blog.163.com/blog/static/1700951922011215104442567/ 显然这题我不会,后来觉得应该要dp的才是,因为前后总是会有影响。 看了解题报告后似乎有点明白,然后自己实现了代码,发现比上面链接里的代码略了一个数组dp[][],我的代码还是比他们的更有可取之处的,我想我以前还是不曾深入地认识bf... 阅读全文

posted @ 2012-06-26 10:34 一毛_ 阅读(550) 评论(0) 推荐(0) 编辑