
动态规划-记忆化搜索
文章平均质量分 65
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 116 - Unidirectional TSP(数字三角)
题目连接:116 Unidirectional TSP题目大意:给出一个n * m的矩阵, 可以看成是 n 棵横着放的三叉树, 要求求所有路径中权值最小的, 并输出字典序最小的方案。解题思路:状态转移方程:num[i][j] = max ( num[i - 1][j + 1], num[i - 1][j + 1], num[i - 1][j + 1]), 注意上下边界是相连原创 2013-09-04 19:50:16 · 1668 阅读 · 0 评论 -
Codeforces 401D Roman and Numbers(记忆化搜索)
题目链接:Codeforces 401D Roman and Numbers题目大意:给出一个最长为18位的数n,以及小于100的数m,现在将n的各个位数重新排列,问说可以组成多少柯整除m的数,不可以有前导0.解题思路:dp[s][j],表示说集合s下,前面剩余j的情况,有多少种可能。然后对于每种状态开一个大小为10的数组,记录下已经考虑过的数字。#incl原创 2014-03-15 08:42:16 · 1457 阅读 · 0 评论 -
uva 11691 - Allergy Test(状态压缩+记忆化)
题目链接:uva 11691 - Allergy Test题目大意:病人要检验过敏源,现在有k中过敏源需要检测,给出过敏源在人体内个一存活得天数,要求用最少的天数检测数过敏源,检测的条件即每个中过敏原有一个注册日期,在检验的过程中,至少保证每种过敏原都有单独在人体内存活的一天,要求用最少得天数检测出过敏原(直到体内所有的过敏原全部死亡)解题思路:因为过敏原的种类最多有20种原创 2014-05-06 20:40:11 · 1510 阅读 · 0 评论 -
uva 10981 - String Morphing(记忆化+离散)
题目链接:uva 10981 - String Morphing题目大意:原创 2014-05-06 09:48:06 · 1400 阅读 · 0 评论 -
hdu 4571 Travel in time(Floyd+记忆化)
题目链接:hdu 4571 Travel in time题目大意:n个城市,m条路,总时间t,起始城市s,终点城市e,接下来给出各个城市的浏览时间,各个城市浏览后的满意程度。然后是m条路的信息。要求一个浏览顺序,使得总的满意程度最大,然后经过一个城市可以选择不去浏览,当前浏览城市的满意度一定要比前一个浏览城市的满意度高,并且最终要回到城市e解题思路:因为经过一个城市原创 2014-04-09 21:01:49 · 1130 阅读 · 0 评论 -
hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,问说第一个人对多的分值。解题思路:记忆化搜索,状态出来就非常水,dp[fl][fr][sl][sr][flag],表示第一堆牌上边取到fl,下面取到fr,同样sl,sr为第二堆牌,flag为第几个人在取。如果是第一个人,dp既要尽量大,如果是第二个原创 2014-04-25 23:38:25 · 1326 阅读 · 0 评论 -
hdu 4778 Rabbit Kingdom(状态压缩)
题目链接:hdu 4777 Rabbit Kingdom题目大意:Alice和Bob玩游戏,有一个炉子,可以将S个相同颜色的宝石换成一个魔法石,现在有B个包,每个包里有若干个宝石,给出宝石的颜色。现在由Alice开始,两人轮流选取一个包的宝石放入炉中,每当获得一个魔法石时,可以额外获得一次机会再选一个包放入。两人均按照自己的最优策略,问说最后Alice的魔法石-Bob的魔法石是多少。原创 2014-07-06 20:01:44 · 1071 阅读 · 0 评论 -
uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)
题目链接:uva 10581 - Partitioning for fun and profit题目大意:给定m,n,k,将m分解成n份,然后按照每份的个数排定字典序,并且划分时要求ai−1≤ai,然后输出字典序排在k位的划分方法。解题思路:因为有ai−1≤ai的条件,所以先记忆化搜索处理出组合情况dp[i][j][s]表示第i位为j,并且剩余的未划分数为s的总数为dp[i][原创 2014-07-05 16:48:05 · 1016 阅读 · 0 评论 -
uva 10604 - Chemical Reaction(状态压缩dp)
题目链接:10604 - Chemical Reaction题目大意:给出n和m,有n种化学药剂,型号由1~n,然后给出n * n行代表相应的两种化学药剂反应后的生成物以及释放的热量,然后给出m个试管,每种试管中有对应的药剂,要求将m种药剂反应合成一种,不要求反应后药剂的种类,要求反应所散发的热量最少。注意:i和j反应可能与j和i反应不同,反应可能吸热。解题思路原创 2013-09-30 23:30:47 · 1850 阅读 · 0 评论 -
uva 1390 - Interconnect(期望+哈希+记忆化)
题目连接:uva 1390 - Interconnect题目大意:给出n表示有n个点,m表示有m条边,现在任选两点建立一条边,直到整个图联通,问说还需建立边数的期望,建过边的两点仍可以建边。解题思路:哈希的方法很是巧妙,将各个联通分量中节点的个数c[i]转换成一个30进制的数(因为节点个数最多为30),因为结果很大,所以对1e5+7取模。获得的哈希值作为插入和搜索的起点。#in原创 2014-07-27 14:24:24 · 1874 阅读 · 0 评论 -
hdu 4960 Another OCD Patient(记忆化)
题目链接:hdu 4960 Another OCD Patient题目大意:给定一个长度为n的序列,然后再给出n个数ai,表示合成i个数的代价。每次可以将连续的子序列和成一个数,即为序列中各个项的和。要求将给定长度n的序列变成一个回文串,一个数字只能被合成一次。解题思路:dp[l][r]表示从l到r被和成回文串的最小代价,dp[l][r]=min(val(r−l+1),val(r−原创 2014-08-19 22:54:29 · 1469 阅读 · 0 评论 -
uva 1076 - Password Suspects(AC自动机+记忆化搜索)
题目链接:uva 1076 - Password Suspects题目大意:有一个长度为n的密码,存在m个子串,问说有多少种字符串满足,如果满足个数不大于42,按照字典序输出。解题思路:根据子串构建AC自动机,然后记忆化搜索,dp[i][u][s]表示第i个字符,在u节点,匹配s个子串。#include #include #include #include #inclu原创 2014-09-05 22:29:56 · 4040 阅读 · 2 评论 -
uva 10917 - Walk Through the Forest(最短路+记忆化)
题目链接:uva 10917 - Walk Through the Forest做一遍最短路,记录下所有点到终点的距离,然后重新建图,如果d[u] #include #include #include #include #include using namespace std;typedef pair pii;typedef long long ll;co原创 2015-09-07 22:41:19 · 1228 阅读 · 0 评论 -
uva 707 - Robbery(记忆化搜索)
题目连接:uva 707 - Robberydp[x][y][t]表示在t时刻x,y时有没有可能存在盗贼,整个时刻只有一个点可以时就可以确定,没有点可能时就是逃脱。#include #include #include #include #include using namespace std;typedef pair pii;const int maxn =原创 2015-09-02 23:15:35 · 676 阅读 · 0 评论 -
hdu 5456 Matches Puzzle Game(记忆化搜索)
题目链接:hdu 5456 Matches Puzzle Game解题思路式子可以变换成A=B+C,从低位处理到高位,dp[i][j][b][c]dp[i][j][b][c]表示到第i位,j有没进位,b为数字B是否已经到达最高为,c为数字C是否已经到达最高位。代码#include <cstdio>#include <cstring>#include <algorithm>using namesp原创 2015-09-29 20:34:24 · 1511 阅读 · 0 评论 -
uva 10239 - The Book-shelver's Problem(记忆化搜索)
题目连接:uva 10239 - The Book-shelver's Problem题目大意:给出n和W,表示说有n本书以及宽度为W的书架,接着n行给出n本书的高度以及宽度,要求将书按照顺序放入书架中,可以使用任意的架子用来分隔上下层,问说n本书最低可以摆多高。解题思路:因为题目中要求说要按照顺序去放书,所以对于i这本书就只有两种情况,要不跟着i-1号书放(如果同层还放得原创 2014-03-12 10:25:19 · 1527 阅读 · 0 评论 -
uva 11600 - Masud Rana(记忆化搜索)
题目链接:uva 11600 - Masud Rana题目大意:给出n和m,表示说有n座城市,每两座城市间有一条路,每条路上都有怪物,现在有m条路上没有怪物,给出没有怪物的路。现在任选一座城市移过去,清除路上的怪物,当所有城市可以直接连接时终止,问说需要移动次数的期望。解题思路:首先将已经联通的城市算成是一个联通集,这样的话,就有k个联通集,k小于三十,所以可以用二进制数来原创 2014-03-08 21:31:47 · 1570 阅读 · 0 评论 -
uva 10688 - The Poor Giant(记忆化搜索)
题目链接:uva 10688 - The Poor Giant题目大意:给出n和k,表示n个苹果,排成一列,重量分别是i+k,i为对应的第几个苹果,现在在这n个苹果中,有1个苹果是甜的,假设该苹果的序号为x,那么序号小于x的即为苦的,大于x的为酸的。求一个吃苹果的序列,要求可以找出甜得苹果,并且要求所有可能下的吃苹果质量和最小。解题思路:记忆化搜索,dp[i][j]表示说甜原创 2014-03-10 22:37:50 · 1230 阅读 · 0 评论 -
uva 10285 Longest Run on a Snowboard(记忆化搜索)
题目连接:10285 - Longest Run on a Snowboard题目大意:在一块R * C的雪地上有个叫name名字的人滑雪, 每次可以从高的地方滑向低的地方, 现在要选一个地方开始滑雪, 要求可以滑动的距离最长, 输出最长值。解题思路:可以说是DFS吧, 但是对于每个位置只遍历一次, 然后记录最优解, 下次再遇到时可直接调用最优解。#includ原创 2013-09-04 21:01:07 · 1269 阅读 · 0 评论 -
uva 11008 - Antimatter Ray Clearcutting(状态dp)
题目链接:11008 - Antimatter Ray Clearcutting题目大意:有一篇森林,给出n棵树的坐标,现在有一种反物质光线,可以清楚直线上的树木,然后给出m,代表这片森林要除掉m棵树,问最少使用几次光线。解题思路:状态压缩,看了别人的题解才知道要用位运算去做,平时有碰到记忆化搜索压缩状态都用数组可以解决的,今天写了位运算版,感觉对位运算有了进一步的了解,下原创 2013-09-30 23:44:31 · 1845 阅读 · 0 评论 -
uva 709 - Formatting Text(记忆化搜索)
题目连接:709 - Formatting Text题目大意:给n,然后在给出一篇文章,有若干个单词,以空行结束,现在要将文章排序使得文章的badness 越小。badness 的计算方法,如果一行只有一个单词的话,若单词的长度小于n,则badness 增加500,否则为0。若一行有多个单词,每两个单词之间的badness = (c - 1) ^ 2 (c为两个单词的空格数原创 2013-10-01 22:16:46 · 2011 阅读 · 0 评论 -
uva 10651 - Pebble Solitaire(记忆化搜索)
题目链接:10651 - Pebble Solitaire题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋子则被消除,‘o--', 问对于一个给定了的棋盘,通过上述消除棋子的方法最后最少绳几个棋子在棋盘上。解题思路:递归搜索 + 记忆化, 并且记忆化的值为所有测试数据公用的,也就是原创 2013-09-17 21:39:44 · 1259 阅读 · 0 评论 -
uva 10558 - A Brief Gerrymander(记忆化搜索)
题目链接:10558 - A Brief Gerrymander题目大意:在一个100 * 100的网格中, 给出n个坐标,坐标的含义为以该坐标为左下角的格子为neighborhood,对应给出坐标的顺序是street,后给的avenue(类似于x、y),然后给出k条切线将网格切成k -1块区域(avenue)头尾一定是1和100,然后在给出cut数,表是在street方向上可以切原创 2013-10-02 00:43:38 · 2813 阅读 · 0 评论 -
uva 10911 - Forming Quiz Teams(记忆化搜索)
题目链接:10911 - Forming Quiz Teams题目大意:给出2 * n个选手的坐标, 要求将所有的选手分成n组, 每组两个人, 所有组的两个人之间的距离之和要最小, 输出最小值。解题思路:网络赛的时候写过类似的题目, 只不过是选4个点做正方形,所以思路很明确,每次选取任意两个点配对,递归搜索,并记录下来。然后我不是用未运算来记录点的状态,而开了个数组,因为位原创 2013-09-19 22:21:59 · 1681 阅读 · 0 评论 -
uva 10913 - Walking on a Grid(记忆化)
题目链接:10913 - Walking on a Grid题目大意:给出n,k,然后给出一个n*n的图,从(1,1)通过向下,左和右三个方向,走到(n,n)点,途中不可以走相同的位置,并且路过的位置为负数的个数impossible解题思路:记忆化搜索,用四维数组去记录最优解,vis二维数组表示当前访问状态,dp[x][y][i][j]表示位置x,y的地方,当路过的负数个数原创 2013-09-23 23:42:29 · 2149 阅读 · 1 评论 -
uva 10118 - Free Candies(记忆化搜索)
题目大意:10118 - Free Candies题目大意:有4堆糖果, 每堆糖果有n颗糖果,然后给出每颗糖果的类型1~20,然后只有取走当前堆的前面一颗糖果后才可以取后面的糖果, 然后小伙伴有一个篮子,篮子可以装5个糖果,如果篮子中的糖果存在相同类型的两个糖果,便可以将这两颗糖果算成一对放进腰包,问,小伙伴按什么样的方式取糖果可以取到最多的糖果。解题思路:记忆化搜索,开一原创 2013-09-26 22:51:45 · 1528 阅读 · 0 评论 -
uva 10626 - Buying Coke(记忆化搜索)
题目链接:10626 - Buying Coke题目大意:给出要买可乐的数量, 以及1元,5元和10元硬币的数量, 每瓶可乐8元,每次照钱会按照最少硬币的方式找回, 问如何投币可使得投入的硬币数最少, 输出最少硬币值。解题思路:记忆化搜索, 因为可乐每购买一次便要找会硬币,所以对与每个状态考虑的情况比并不是很多。注意:1、每够买一次可乐便会找回一次硬币,所以不用原创 2013-09-26 23:04:17 · 3837 阅读 · 0 评论 -
uva 11125 - Arrange Some Marbles(记忆化搜索)
题目链接:uva 11125 - Arrange Some Marbles题目大意:给出n表示有n种颜色的大理石,然后a1~an,表示各种颜色的大理石有多少个,然后现在要将大理石排成一排,颜色相同的的为一组,相邻的两组颜色和大小不能相同,而且头尾两组的大小和颜色也不能相同,问说有多少排列的方式。解题思路:一开始被题意搞蒙了,其实记忆化搜索就可以了,开一个5维数组,rec[b原创 2013-11-14 20:19:33 · 1240 阅读 · 0 评论 -
uva 1252 - Twenty Questions(记忆化搜索)
题目链接:uva 1252 - Twenty Questions题目大意:给出m和n,表示有n个长度为m且由01组成的字符串,要求询问k个位置,以区分这n个字符串,每次询问一个位置,将会得到该位置的字符,注意询问k次的位置并非固定:例:5 410100110000000100010ans = 2;询问了第1个位置后,区分开了(1)(2)和(3)(4),然而区分(原创 2014-02-24 19:06:16 · 1436 阅读 · 0 评论 -
uva 607 - Scheduling Lectures(贪心+记忆化搜索)
题目链接: 607 - Scheduling Lectures题目大意:给出课题数n,以及每堂课的时间l,以及常数c,然后是n个课题所需要的时间。问题1:最少需要几节课时可以讲所有的课题讲完,并且课题的顺序不能调换,一个课题不能分在两节课讲。问题2:在用的课时最少的情况下,如何让同学们的不满意度最低,不满意度的计算是根据课时的剩余时间t计算的,解题思路:问题原创 2013-09-22 16:32:33 · 1486 阅读 · 0 评论 -
uva 1099 - Sharing Chocolate(记忆化搜索)
题目链接:uva 1099 - Sharing Chocolate题目大意:给出一个巧克力,以及它的长和宽,要求判断能否将这个巧克力分成n个指定面积大小的小巧克力。解题思路:记忆化,d[S][x],表示说集合S,用x = min(r0,c0)的情况能否可行。注意面积要恰好相等才行。#include #include #include using name原创 2014-02-18 10:07:51 · 1826 阅读 · 0 评论 -
Codeforces 392B Tower of Hanoi(递归+记忆化搜索)
题目链接:Codeforces 392B Tower of Hanoi题目大意:给出一个3*3的矩阵,表示从i移动到j的代价,现在给出n,表示有n个碟子在1柱,需要移动到3柱,要求给出最小的花费。解题思路:dp[l][r][n],表示的是从l移动n个碟子到r的最小花费,然后总共有两种移动方式:ans1 = solve(l, x, n-1) + solve(x, r, n原创 2014-02-19 14:59:52 · 1616 阅读 · 1 评论 -
LightOJ 1018 - Brush (IV)(记忆化搜索)
题目链接:LightOJ 1018 - Brush (IV)代码#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 17;const int maxs = 1<<17;const int inf = 0x3f3f3f3f;in原创 2015-11-09 20:47:05 · 726 阅读 · 0 评论