关闭

hdoj4540 威威猫系列故事——打地鼠

题意:  给出每一个时刻地鼠出现的所有位置,问如果威威猫每一个时刻都可以打到一个地鼠的话(位置的变化会产生cost,在这道题中就是位置之间的相对距离),这样打下来最终的最小cost是多少。也可以转化成数塔问题,不过数塔问题这道题是求途径的cost最小值。   状态转移方程:// dp[i][j]表示走到第i层(在题目中对应第i个时刻)、第j个位置所得到的最小cost // 下面式子的前提是has[...
阅读(271) 评论(0)

hdoj1159 Common Subsequence

题意:找两个字符串的最长公共子序列(Loggest Common Subsequence, LCS)。用“表格法”(姑且这么叫吧)就可以很快地做出来,至于表格法的原理,以后有时间再整理吧,一时半会也整理不出来。 比如给出的第一组输入: 具体的转移方程是:// dp[i][j]表示在到了字符串sa的i位置和字符串sb的j位置时,可以达到的最大值,因为这里做了一个第一行列为0的初始化,所以对应到字符...
阅读(167) 评论(0)

hdoj1087 Super Jumping! Jumping! Jumping!(DP)

题意:  并不是从start一步一步地走、一直走到end然后取最大值这么简单,而是在某一点上可以一次性走N步到达另一个店,比如这里“1”可以直接走到“2”(不过一定是从左到右,不能回头),不过这样的结果只是3了,不是最大值。所以,这是一个DP问题。状态转移方程先写出来,等下再分析:// origin[]为原数组,dp[]是在origin[]上进行动态规划的数组 // dp[i]表示“走到下标为i的这...
阅读(154) 评论(0)

hdoj1176 免费馅饼(DP)

题解:  动态规划,这一题实质上跟2084(数塔)那题是一样的,因为这一题可以转化成数塔问题,“馅饼掉下来的时刻”就是“塔的深度”,也就是dp数组的第1维;而第2维是一样的,都是表示位置。考虑题意给出的输入:   Sample Input   6   5 1   4 1   6 1   7 2   7 2   8 3   0   那么我们可以构造出一个数塔:   第0层:     0...
阅读(211) 评论(0)

hdoj2084 数塔

题解:DP的经典题目之一,从塔的最底层一直往上走,到达顶部后途中累加的和最大的就是所要求的值。在这里,可以设置二维数组dp[i][j],表示“走到第i层、第j个元素时可以获得的最大值”。这里有两个关键的地方: 考虑的对象是“走到了某个位置”,而不是“从某个位置开始走”。这也是DP比如背包问题里面的一个重要思想。这样的话,状态转移方程就是: dp[i][j] += max(dp[i+1][j], dp...
阅读(174) 评论(0)

hdoj1014 Uniform Generator

题意:给出公式next = (next + step) % mod中的step和mod,问能不能在恰好mod步之内生成0~mod-1中所有的数字。另外,有人说可以不用模拟,直接判断step和mod这两个数是否互质就可以了(即最大公约数是否等于1),是则Good Choice,反之就是Bad Choice,暂时没有了解它的原理,也许是自己的数论基础不够好吧。代码如下(15MS,1896K):#incl...
阅读(300) 评论(0)

hdoj1013

题意:…… 代码如下: #include #include #include #include using namespace std; string int_2_string(int a) { stringstream ss; string ret(""); ss <> ret; return ret; } string bit_sum(string...
阅读(269) 评论(0)
    个人资料
    • 访问:26763次
    • 积分:539
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    最新评论