DP
文章平均质量分 61
chAngE_AC
这个作者很懒,什么都没留下…
展开
-
poj-2367 The Cow Lexicon
题意:字典里有W个词,输入一个长度为L的字符串,求最少删除几个字母后使得字符串里的所有词都可以在字典里找到。 思路:从字符串的左端开始每移动一位都先默认这些字符都需要删除,因为没有找到匹配的单词即 dp[i]=dp[i-1]+1 直到指针移动的长度在字典里能够找到单词,找到相同长度单词后,从单词末尾和指针之前的字符匹配如果可以完全把字典里的单词匹配完,此时意味着之前删除的部分字符原创 2015-08-24 20:15:58 · 301 阅读 · 0 评论 -
poj-2411 Mondriaan's Dream (状态压缩dp)
题意:给你一个h*w的矩阵,让你使用一个1*2的板子把矩阵覆盖完全,不能重叠且不能有空缺,问有多少种覆盖方法。思路:首先我们可以知道木板的摆放有3种方法,横着放,竖着放,不放。 我们设定横着放占两格状态为11,不放占一格为0,竖着的情况特殊处理,因为它占了两行,我们设定上一行为0下一行为1使得对下一行的位置产生影响并且在上一行有所标记。我们可以用dfs来枚举所有的两行间情况。原创 2016-02-21 10:37:02 · 447 阅读 · 0 评论 -
BC - King's Order - 数位DP
题意:给你一个字符串的长度n在这个n长的字符串里不能出现连续超过3次的的字符。问符合该条件的字符串有几个。思路:一个比较暴力的dp方法:开一个三维dp数组dp[串长度][添加字符前的最后一个字符][最后一个字符重复数]这样我们对于每个长度枚举新添加的一个字符和倒数第二个,如果新加字符与倒数第二个字符相同我们对于每一个重复情况都向下递推累加。如果不同我们让dp[当前长度][最后一个字原创 2016-03-17 20:56:01 · 397 阅读 · 0 评论 -
某不知名的题 - 概率DP
两名玩家进行对战,P1拥有N点血量,P2用有M点血量。两人均有一定概率可以打出1-6点上海,每次两名玩家进行对战的时候,伤害高的一方可以打掉伤害低的一方一点血量。已知N,M以及两名玩家的攻击力概率。求P1是胜利的概率。输入多组输入,魅族输入两个整数N,M表示玩家的血量(1随后输入两组浮点数每组6个浮点数,分别表示P1,P2打出1-6伤害的概率。输出对于每组输入输出P1的原创 2016-03-17 19:04:16 · 568 阅读 · 0 评论 -
poj-3254 Corn Fields 状态压缩dp
题意:一农民有一片N*M的地,地里的土地有的肥沃有的不肥沃,0表示不肥沃,1相反。农民需要往这片地里放养牛,一只牛只能在一块1*1的地里且只在肥沃的地里。牛的数量不限,问这片地里能有多少种放牛的情况。思路:首先能确定这是一道dp题,为了简化dp的状态存储,使用了状态压缩,我们可以用一个二进制数来表示一行中土地是否肥沃的情况或者表示一行里能放牛的所有情况,题中说明一行最多12个地那么我们用一个1原创 2016-01-27 08:35:03 · 372 阅读 · 0 评论 -
HDU - 1506 Largest Rectangle in a Histogram
题意:给你n个木板的长度,且宽度都为1,让你找出最大的矩形区域面积思路:这道题的关键就是算出每个可能的矩形的面积,而面积的计算方法可以是从一个板开始找出可向左延伸和向右延伸的边界,若左边界为L右边界为R,那么矩阵大小公式就是H[i]*(R-L+1),此时我们需要找到每个板可延伸到的边界。此时用两个数组L[i],R[i]来表示第i个板的左右延伸边界。计算边界的方法为 for(i原创 2015-10-29 21:24:28 · 292 阅读 · 0 评论 -
HDU - 2955 Robberies 01背包
简单说下背景,有个人要抢银行,对于每个银行有银行里存的钱数,以及抢了以后被抓住的概率,对于每组数据有一个可以被接受的最大被抓概率(我们称px),和要强的银行个数。首先开始我自己没有读懂题只是凑了一下数据发现可以是一个以概率为背包容量的01背包,然后将概率转化为了整数再用普通01背包装银行的钱数,然而无论乘多少倍将概率化整是无法真正实现的。所以正确的思路是以总共抢的钱数作为状态,对于每一个钱数存在一原创 2015-10-22 20:16:49 · 362 阅读 · 0 评论 -
poj-2151 Check the difficulty of problems 概率+DP
DescriptionOrganizing a programming contest is not an easy job. To avoid making the problems too difficult, the organizer usually expect the contest result satisfy the following two terms:1. All o原创 2015-08-17 09:19:55 · 469 阅读 · 1 评论 -
[周赛] FZU 2177
DescriptionYtaaa作为一名特工执行了无数困难的任务,这一次ytaaa收到命令,需要炸毁敌人的一个工厂,为此ytaaa需要制造一批炸弹以供使用。 Ytaaa使用的这种新型炸弹由若干个炸药组成,每个炸药都有它的威力值,而炸弹的威力值为组成这个炸弹的所有炸药的最大威力差的平方,即(max-min)^2,假设一个炸弹有5个炸药组成,威力分别为5 9 8 2 1,那么它的威力为(9-1)^原创 2015-08-24 18:50:55 · 368 阅读 · 0 评论 -
poj-1260 Pearls
题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。例如样例Input的第二个例子:31 101 11100 12需要买第一类1个,第二类1个,第三类100个按常规支付为 (1+10)*10 + (1+10)*11 + (100+10)*12 = 1551元(一共买了102个珍珠)但是如果全部都按照第三类珍珠的价格支原创 2015-08-24 21:18:10 · 386 阅读 · 0 评论 -
poj-1836 Alignment
题意:有一个队军人排成一排,但是高矮并不安顺序。为了使这个队伍中的任意一个人都可以看到左端或右端,需要让几个人出列。给你一个队列求最少需要出列的人的个数。 思路:因为需要看到队伍的最左端或者最右端这就需要队伍自左向右身高的递增的或者自右向左递增。(注意题目描述与实际要求有出入,题目要求是看到端点的人,而题意为看到队伍物理上的最左或右端,即最左边人的左边为左端,相反也是)所以该题可原创 2015-08-24 20:27:32 · 393 阅读 · 0 评论 -
poj-1185 炮兵阵地
中文题意不解释,由于一行最多10位也就是一行中所有状态只有1000+,并且根据题目描述每一个炮的周围左右两位是不能放第二个的,所以我们可以再缩小状态数量,最后大约60+。炮的上下也是不能放第二个炮的所以我们可以知道,当前的状态会与之前两个状态有关,由于我们缩小了可用状态的数量我们可以对于每一行,枚举当前行和前两行的状态,根据状态的相关性我们可以得到状态转移方程。dp[i][j][k]=max(dp原创 2016-02-25 17:15:13 · 374 阅读 · 0 评论