dp
一些动态规划方面的编程题
NeverMoreH
^_^
展开
-
uvalive5983(二分+dp)
题意: 给出一个n*m的图,从左上角出发,去右下角,只能向下或者向右走,每个格子有权值,问如何安排你在左上角时的权值,使得到达右下角时权值大于1。 思路: 题中给出10m时限,于是我就二分答案+dp验证咯,具体看代码。 代码: #include #include #include #include #include #include #include using nam原创 2015-08-29 10:53:53 · 448 阅读 · 0 评论 -
uvali5697(DP)
题意: 给出一个由I、D和?组成的串,串的长度是n,我们要根据串的规则构造出满足的由1~n+1组成的数列,其中每个数字只出现一次。串的规则定义如下: 如果当前字母是I,我们要保证这一位的数字要比前一位大,如果是D,则比前一位小,?代表都可以。请求出满足串的规则的数列的个数。 思路: 首先我们构造状态如下: dp[i][j]=k 表示我们用1~i这些数字构造前i位且第i位是j的情况原创 2015-08-12 10:17:06 · 477 阅读 · 0 评论 -
uvalive5790(DP)
题意: 给出一个数字三角形,你如果想要取出一个格子的数字,必须把这个格子的父亲都取走,问你能取走的最大值。 思路: 想到如下的转化: 我们就可以把此题变成在第二个图形上选择矩形,具体细节请看代码。 代码: #include #include #include #include using namespace std; int sum[1005][1005];原创 2015-08-18 09:03:54 · 311 阅读 · 0 评论 -
hdu5375(格雷码问题+简单DP)
题意: 给出一个二进制数字,由0、1和?组成,最长有200000位,我们要把该二进制数字转化成格雷码,?的位置我们可以随便填1或者0,我们设该二进制的位数是n,题中给出n个数字,代表如果格雷码的第i位是1,我们就可以吧a[i]拿走,问我们能拿走的最大值。 思路: 首先我们要知道二进制是如何转化成格雷码的: 然后我们可以进行dp了。 我们设状态为dp[i][j]=k 表示前原创 2015-08-11 20:16:25 · 365 阅读 · 0 评论 -
uvalive4842(AC自动机+DP)
题意: 给出猴子打字时打某个字母的概率,猴子最多可以敲键盘m次,问得到的长度是m的单词包含模式串的概率。 思路: AC自动机+dp。 首先,我们用模式串构造一个AC自动机,用dp[i]][j]表示当前猴子正在敲第i个字母且我们在自动机的第j个节点上的概率,转移方程就很好想了,正着dp就可以,具体看代码吧。 代码: #include #include #include #原创 2015-08-29 20:35:36 · 401 阅读 · 0 评论 -
hdu5389(DP)
题意: 给出n个人的id,有两个门,每个门有一个标号,我们记作a和b,现在我们要将n个人分成两组,进入两个门中,使得两部分人的标号的和(迭代的求,直至变成一位数,我们姑且叫做求“和”操作~)分别等于a和b,问有多少种分法。 思路: 很容易想到,如果能找到满足题意的解,一定满足a和b的和等于n个人的标号的和,所以我们只需要判断n个人的标号组成a的情况有多少(或者只判断b,一样),同时还原创 2015-08-13 16:41:56 · 923 阅读 · 0 评论 -
hdu5489(2015合肥网络赛F题)
转载自:http://blog.csdn.net/lwt36/article/details/48774103 题意: 给出一个数列,在其中删除连续的L个数字,使得剩余的数字LIS最大,输出此LIS。 思路: nlogn的LIS+线段树。 代码: //#pragma comment(linker, "/STACK:1024000000,1024000000")转载 2015-09-28 20:45:07 · 418 阅读 · 0 评论 -
hdu5459(2015沈阳网络赛J题)
题意: 给出一个类似于斐波那契数组的字符串的定义,给出一个n,让求第n个串中任意两个c的距离的和。 思路: 我们用了三个小时找规律,最后发现是递推。。。 代码: #include #include #include #include #include using namespace std; const int maxn = 20005; const int maxm原创 2015-09-21 21:14:24 · 436 阅读 · 0 评论 -
滴滴笔试编程题第一题
题意: 给出一个n个数字的序列,寻找最大的k,使得将n个数字划分为k个不重叠的子区间,每个子区间的异或值为0。 思路: 动态规划,看代码就懂~ 代码: #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define maxn ...原创 2017-09-10 17:08:01 · 812 阅读 · 1 评论