
HDOJ刷题笔记
VitaLemon__
JavaWeb Android
展开
-
hdoj1159 Common Subsequence
题意:找两个字符串的最长公共子序列(Loggest Common Subsequence, LCS)。用“表格法”(姑且这么叫吧)就可以很快地做出来,至于表格法的原理,以后有时间再整理吧,一时半会也整理不出来。 比如给出的第一组输入: 具体的转移方程是:// dp[i][j]表示在到了字符串sa的i位置和字符串sb的j位置时,可以达到的最大值,因为这里做了一个第一行列为0的初始化,所以对应到字符原创 2016-03-23 11:39:51 · 488 阅读 · 0 评论 -
hdoj1242 Rescue
题意: 这道题是常规的BFS,加上了一个”打怪”的设置,而”打怪”实质上就是步数加1的操作罢了.如果用的是queue而不是priority_queue,(我觉得用queue就可以了),得维持”访问的节点的步数递增”这样一个原则,也就是: 如果当前位置是”x”即guard的时候,要打到guard,具体代码中的操作是: (1)新增加一个该位置的节点push进queue,其中该节点的步数要增原创 2016-04-11 17:46:27 · 521 阅读 · 0 评论 -
hdoj1241 Oil Deposits
题意: 一个位置上有油会扩散到别的位置(上下左右,还有对角线上的4个相邻位置,一共8个位置,也就是以某个位置为中心的切比雪夫距离为1的8个点),计算”油堆”的数目. 每一次遇到一个没有标记的有油的位置,就以它为起点进行BFS,把这一次BFS可以到达的地方标记(即漏油).然后,数油堆的方法:可以从(0,0)位置开始遍历到(n,n),遇到有油的地方,如果标记了就跳过,没有标记的就进行BFS,并且原创 2016-04-11 17:32:00 · 485 阅读 · 0 评论 -
hdoj1240 Asteroids!
题意: BFS的小小变形,场景由二维迷宫变成三维空间的迷宫,基本框架是不变的. 这个题目就是考耐心嘛,毕竟就像一篇阅读理解,只需要看懂那个slice就是指z轴上不同点的平面就可以了.另外,需要注意题目中给出的起点的顺序是:start_y(列), start_x(行), start_z,这个需要跟自己的数组中的每一维的意义对应起来,否则结果就会不对.然后还要注意,每走到一个点,都会有6个方向的原创 2016-04-11 16:43:07 · 480 阅读 · 0 评论 -
hdoj1175 连连看
题意: 连连看的玩法:给定一个棋盘,上面有各种数字,大于0的数字表示图案,0表示该位置没有图案。问当给定两个图案的坐标时,能不能按照连连看的规则把这两个图案消去。注意,这里所谓连连看的规则,是找出一条路径让这两个图案连接起来、并且该路径的“拐弯”的次数最多为2。 思路其实已经很清晰了,在起点和终点间找出一条路径并且“拐弯数”(direction change)尽可能少,很容易想到BFS。但是原创 2016-04-10 13:49:47 · 889 阅读 · 0 评论 -
hdoj1180 诡异的楼梯
题意 走迷宫,求最少步数,很容易就想到BFS,而这是一道加了点难度的BFS,但是框架是不变的。唯一的难点就是“梯子”。题意中有两个地方需要理清: 1.梯子可以有很多个 2.人物可以在某个时候选择停止,不走 另外,梯子的方向,是随着时间(或者说走的步数)的增加而进行,因此这里存在一个类似于“奇偶性”的问题。即: (1)如果梯子开始的时候是“|”,那么走了奇数步之后就会变成“-”,原创 2016-04-07 23:07:41 · 483 阅读 · 0 评论 -
hdoj4540 威威猫系列故事——打地鼠
题意: 给出每一个时刻地鼠出现的所有位置,问如果威威猫每一个时刻都可以打到一个地鼠的话(位置的变化会产生cost,在这道题中就是位置之间的相对距离),这样打下来最终的最小cost是多少。也可以转化成数塔问题,不过数塔问题这道题是求途径的cost最小值。 状态转移方程:// dp[i][j]表示走到第i层(在题目中对应第i个时刻)、第j个位置所得到的最小cost// 下面式子的前提是has[原创 2016-03-23 16:51:14 · 738 阅读 · 0 评论 -
hdoj1014 Uniform Generator
题意:给出公式next = (next + step) % mod中的step和mod,问能不能在恰好mod步之内生成0~mod-1中所有的数字。另外,有人说可以不用模拟,直接判断step和mod这两个数是否互质就可以了(即最大公约数是否等于1),是则Good Choice,反之就是Bad Choice,暂时没有了解它的原理,也许是自己的数论基础不够好吧。代码如下(15MS,1896K):#incl原创 2016-03-22 19:43:11 · 647 阅读 · 1 评论 -
hdoj1013
题意:……代码如下:#include #include #include #include using namespace std;string int_2_string(int a) { stringstream ss; string ret(""); ss << a; ss >> ret; return ret;}string bit_sum(string原创 2016-03-22 17:15:41 · 484 阅读 · 0 评论