随笔分类 -  POJ解题报告

上一页 1 2 3 4 5 6 7 8 下一页

北大POJ解题报告,全是我亲手所写,仅供与所有ACMer交流分享,未经允许请勿擅自用于个人盈利用途(包括网络虚拟积分、虚拟币、实际货币交易等在内的一切商业行为)
POJ3041-Asteroids
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299322465解题思路:把方阵看做一个特殊的二分图(以行列分别作为两个顶点集V1、V2,其中| V1|=| V2|)然后把每行x或者每列y看成一个点,而障碍物(x,y)可以看做连接x和y的边。按照这种思路构图后。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。再利用二分图最大匹配的König定理:最小点覆盖数 = 最大匹配数(PS:最小点覆盖:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖图的所有的边 阅读全文

posted @ 2011-07-30 09:30 小優YoU 阅读(1035) 评论(0) 推荐(0)

POJ1094-Sorting It All Out
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299234850提示:拓扑排序这道题有隐含这一信息,每输入一对关系,如果判定有结果,则可以忽略后面输入数据,即使后面输入数据能改变结果,也不用管。所以应该每输入一个关系就去更新当前的图,然后进行一趟拓扑排序。一旦产生结果,再对后面的数据处理下,就可以输出结果。 所有可能的情况罗列:(独家经验原创,重中之重!可以说没有这些,这题就无法AC!)一、当输入的字母全部都在前n个大写字母范围内时:(1) 最终的图 可以排序: 在输入结束前如果能得到最终的图(就是用这n个字母作为顶点,一个都不能少 阅读全文

posted @ 2011-07-30 09:24 小優YoU 阅读(715) 评论(0) 推荐(1)

POJ3026-Borg Maze
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299324104提示:BFS+Prim大致题意:在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要求用最短的路径L连接所有字母,输出这条路径L的总长度。一格的长度为1,而且移动的方法只有上、下、左、右,所以在无任何墙的情况下(但“墙#”是必须考虑的,这里只是为了说明)任意两个字母之间的距离就是直接把 横坐标之差 加上 纵坐标之差 注意的是,可行的路为 字母 和 空格 不可行的路为 # 和 矩阵范围之外根据题意的“分离”规则, 阅读全文

posted @ 2011-07-30 09:21 小優YoU 阅读(394) 评论(0) 推荐(1)

POJ1258-Agri-Net
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299324000提示:又是一题求最小生成树的总权值,继续Prim.... 1 //Memory Time 2 //300K 32MS 3 4 #include<iostream> 5 using namespace std; 6 7 const int inf=100001; //无限大 8 9 int n; //农场数量10 int dist[101][101];11 12 int prim(void)13 {14 int s=1;15 int m=1;16 bool u 阅读全文

posted @ 2011-07-30 09:18 小優YoU 阅读(206) 评论(0) 推荐(0)

POJ2485-Highways
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299323790提示:题意很简单,就是求最小生成树的最大边。继续Prim吧O(∩_∩)O 1 //Memory Time 2 //656K 766MS 3 //思路、解法都和POJ1789基本一致,只是多了一个判定条件 4 5 #include<iostream> 6 using namespace std; 7 8 const int inf=65540; //无限大 9 int dist[501][501];10 int n; //村落数量11 12 int prim( 阅读全文

posted @ 2011-07-30 09:16 小優YoU 阅读(272) 评论(0) 推荐(0)

POJ1789-Truck History .
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299323607题意大概是这样的:用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。例如有如下4个编号:aaaaaaabaaaaaaabaaaaaaabaaaa显然的,第二,第三和第四编号分别从第一编号衍生出来的代价最小,因为第二,第三和第四编号分别与第一编号只有一个字母是不同的 阅读全文

posted @ 2011-07-30 09:15 小優YoU 阅读(1085) 评论(0) 推荐(0)

POJ2240-Arbitrage
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299339309提示:本题需要建立容器,建立字符串到int的映射(一一对应)关系,把然后字符串作为数组下标,模拟数组题意:求自身到自身的最大转换率。 最简单的方法就是floryd算法变形,求最大路径后,求最大环,看它是否满足条件。 每一个结点都必须有到自身的环(不甚清楚原因)。注意:该double的地方一定不能为int,切记!!! 1 //Memory Time 2 //276K 79MS 3 4 #include <iostream> 5 #include<map& 阅读全文

posted @ 2011-07-30 01:45 小優YoU 阅读(289) 评论(0) 推荐(0)

POJ1125-Stockbroker Grapevine
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299338996提示:最短路问题,Floyd算法,相比于Bellman和Dijkstra,我认为是最接近人类自然思维的算法,O(∩_∩)O哈哈~说真的,我第一次做Floyd的题目时,我没有看过Floyd算法,我自己把Floyd推导出来了。。。至于数据的存储,就用邻接矩阵,只要对矩阵上的时间进行修改就行了,相对比较方便。 问题重述 描述 众所周知,证券经纪业依靠的就是过度的传言。您需要想出股票经纪人中传播假情报的方法,让您的雇主在股票市场的占据优势。为了获得最大的效果,你必须蔓延最快的方 阅读全文

posted @ 2011-07-30 01:42 小優YoU 阅读(682) 评论(0) 推荐(0)

POJ2253-Frogger
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299339470提示:唉。。不说了,又是Floyd...注意精度就是了题目大意:给出两只青蛙的坐标A、B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。Floyd算法用Floyd算法求出两两最短路,再求出从每个点开始的最长路,最后从这n个最长路中求出最小的那个即为所求。 1 阅读全文

posted @ 2011-07-30 01:39 小優YoU 阅读(552) 评论(0) 推荐(1)

POJ1062-Expensive dowry
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299338542提示:难得的中文题。。虽然语言相通但是不好解决。。。都说便宜没好货,这是真的= =最短路问题,dijkstra算法的运用。。。很多同学对dijkstra有一种与生俱来的恐惧,首当其冲就是它的名字。。说实在我现在也不知道怎么念它O(∩_∩)O哈哈~其实dijkstra很简单的,最难也就它的名字,不懂得同学去翻书,这里我不解释dijkstra,我只说一个我认为能够很好理解dijkstra精髓的关键点: 新源点合并到旧源点时,新源点到旧源点的边权的移交(也可理解为松弛)弄清了 阅读全文

posted @ 2011-07-30 01:36 小優YoU 阅读(264) 评论(0) 推荐(1)

POJ3259-Wormholes
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299075341提示:利用虫洞的时光旅行,很有趣的一道题。涉及到图论的知识,关键是构造图,用Bellman-Ford算法找出负权环Bellman-Ford算法核心在于松弛,具体可以百度,这里就不重复前人的智慧了O(∩_∩)O哈哈~需要注意的就是输入说明Input这部分,很多人读不懂这段题意:正权(双向)边部分:Line 1 of each farm: Three space-separated integers respectively: N, M, and W Lines 2~M+1 阅读全文

posted @ 2011-07-30 00:01 小優YoU 阅读(345) 评论(0) 推荐(0)

POJ3982-The Fibonacci sequence
摘要:转载请注明出处:優YoUhttp://user.qzone.qq.com/289065406/blog/1305340420变种的大数斐波那契数列水题,直接加就可以了,循环使用4个大数数组a,b,c,ans存放最新的和值,循环25次后的ans就是A99的值 1 //Memory Time 2 //216K 32MS 3 4 #include<iostream> 5 #include<string> 6 using namespace std; 7 8 const int size=1000; //大数位数 9 10 void add(char* aa,char* bb, 阅读全文

posted @ 2011-07-29 20:21 小優YoU 阅读(230) 评论(0) 推荐(0)

POJ2602-Superlong sums
摘要:转载请注明出处:優YoUhttp://user.qzone.qq.com/289065406/blog/1305101054非常恶心的大数相加= =首先输入就够恶心了。。。哪有人逐位还要间断输入两个数的。。。。注意:如果用char[]保存加数和被加数,要用getchar()输入, 如果用int[]保存加数和被加数,要用scanf)输入。用cin会超时,cin是重载函数,没有指定格式,输入时比较浪费时间100W的空间不能局部静态申请,单可以全局静态申请,也可以局部动态申请(用new)最恶心得是,我把结果开头的0(如果有的话)删去,竟然WA,真没见过这样的加法!Output file should 阅读全文

posted @ 2011-07-29 20:17 小優YoU 阅读(334) 评论(0) 推荐(0)

POJ2389-Bull Math
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1305285069大数相乘,水题一道,直接模拟笔算竖式得了,没技巧没算法,秒杀 1 //Memory Time 2 //216K 16MS 3 4 #include<iostream> 5 #include<string> 6 using namespace std; 7 8 const int size=1000; //大数位数 9 10 void mult(char* A,char* B,char* ans)11 {12 int a[size+1]={0};1 阅读全文

posted @ 2011-07-29 20:14 小優YoU 阅读(154) 评论(0) 推荐(0)

POJ1503-Integer Inquiry
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299062368提示:就是多个大数相加的问题= = 1 //Memory Time 2 //184K 0MS 3 4 #include<iostream> 5 #include<cstring> 6 using namespace std; 7 8 const int large=1000; 9 char sum_temp[large];10 char digit_temp[large];11 12 int plus(int j,int carry_bit)13 阅读全文

posted @ 2011-07-29 20:12 小優YoU 阅读(153) 评论(0) 推荐(0)

POJ1001-Precision power
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1305298222浮点大数求幂,水题一道,把“大数乘浮点数”按指数循环就OK了,注意结果的整数部分若为0,则不保留整数部分。小数部分若为0,则不保留小数部分和小数点。 1 //Memory Time 2 //1232K 0MS 3 4 #include<iostream> 5 #include<string> 6 using namespace std; 7 8 const int size=1000; //大数位数 9 10 void mult(char* A, 阅读全文

posted @ 2011-07-29 20:10 小優YoU 阅读(273) 评论(0) 推荐(0)

21位大数的水仙花数
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1305308196为了简化说明,以三位数举例,因为153、135、315、351、513、531的立方和都是一样的,均等于 1^3+3^3+5^3 = 153而我们可以通过逐位检查 立方和153,发现1出现1次,3出现1次,5出现1次,而0~9中的其他数字均出现0次,出现的次数之和为3,刚好等于153的长度。由此我们可以得到 利用枚举0~9各个数字出现的次数,得到水仙花数。得到21位水仙花数的具体方法为:通过10层循环,枚举0~9这10个数字出现的次数(每个数字都可能出现0~21次),当 阅读全文

posted @ 2011-07-29 20:04 小優YoU 阅读(1517) 评论(0) 推荐(1)

POJ3087-Shuffle'm Up
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1303639118题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。现在输入s1和s2的初始状态 以及 预想的最终状态s12问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。解题思路:很浅白的模拟题= = 不懂为什么别人要把它归类到广搜。。。所以我又重新分类了。。。直接模拟就可以了,关键在于状态记录,然后判 阅读全文

posted @ 2011-07-29 19:50 小優YoU 阅读(1917) 评论(0) 推荐(0)

POJ2993-Emag eht htiw Em Pleh
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299148520提示:很烦很简单的国际象棋棋盘模拟,输出比较麻烦而已。。。是POJ2996的相反情况,认真的同学会发现2993的题目和2996的题目是相反的。。。。POJ2996-Help Me with the GamePOJ2993-Emag eht htiw Em Pleh 1 //Memory Time 2 //212K 0MS 3 4 5 #include<iostream> 6 #include<string> 7 using namespace s 阅读全文

posted @ 2011-07-29 19:48 小優YoU 阅读(360) 评论(0) 推荐(0)

POJ2996-Help Me with the Game
摘要:转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299148268提示:很烦很简单的国际象棋棋盘模拟,输入比较麻烦而已输出时:1、不论黑白,KQRBN P均是依次输出,强制大写,但不输出“P”,只输出其坐标2、对白棋的位置,小行优先大行输出(行的数字越小则优先)同行则按列的顺序(a~h)3、对黑棋的位置,大行优先小行输出(行的数字越大则优先)同行则按列的顺序(a~h)4、从2、3点可以看出,黑棋总是先被输入,白棋总是后输入,即黑棋总在棋盘上方,白棋总在棋盘下方,所以输入完成后,对于黑色棋子只需要按类型次序输出,同类型棋子的顺序就是输入 阅读全文

posted @ 2011-07-29 19:46 小優YoU 阅读(362) 评论(1) 推荐(0)

上一页 1 2 3 4 5 6 7 8 下一页

导航