hdu4281 状态压缩dp(mtsp)+树状数组

#include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; const int maxn=17; /*这里参考大佬的代码,去掉初始位进行二进制枚举*/ int n,m,maxs...

2018-10-10 22:31:35

阅读数 69

评论数 0

负值01背包

题意:n头牛,每头牛有一个幽默值和聪明值(有负数),问如何从中选择k头牛,使得幽默值和聪明值的和非负且最大。 思路:把问题看成01背包,背包的总容量为幽默值的和,每一头牛的幽默值和聪明值分别看成是物品的价值和体积。因为幽默值有可能为负数,不能做数组的下标,所以要先移位。 #include #i...

2018-04-15 16:31:02

阅读数 201

评论数 0

hysbz1296 三维dp+01背包

题意:中文 思路:定义dp[i][j][w]为第i个位置涂w颜色,并且往左涂j次后的最大正确颜色。则dp[i][j][w]=max(dp[i-1][j][w],dp[i-1][j-1])+1,dp[i][j][!w]=max(dp[i-1][j-1][w],dp[i-1][j][!w]).(这里...

2018-03-22 16:30:56

阅读数 148

评论数 0

hdu5969 动态规划(递推)

题意:中文 思路:定义dp【i】为第i列埋的地雷数,num[i]为第i个格子上面标着的数字。所以有dp[i]=num[i-1]-dp[i-2]-dp[i-1](当有三个连续的列时) dp[i]=num[i-1]-dp[i-1],当此时为第一列。 定义好了以后,还有一个关键的地方在于:如果一列的...

2018-03-15 23:07:47

阅读数 59

评论数 0

uva15848(内附多种方式判断最长回文子串)

题意:紫书 基本思路:dp[i]=dp[j]+1(if s[j+1 to i]为回文串),当然前提时s[0 to i]不为回文串(dp[i]表示0到i的最少回文串分割数),然后就是最长回文子串的判断。这里我用动态规划的思路:if((s[i]==s[j]) p[i][j]=p[i+1][j-1];...

2018-03-11 16:53:42

阅读数 59

评论数 0

01背包 uva12563+运算符重载

题意:见紫书。 思路:01背包。 一开始自己写了个wa+tle的版本。wa的原因主要是,刚开始dp都是0,根据代码,第一首歌就变成必选。这是以后需要注意的地方。 #include #include #include #include #define inf 0x3f3f3f3f #defin...

2018-03-06 22:58:40

阅读数 39

评论数 0

wannafly10 b题 思维+类lcs 好题

题意:中文首先吐槽一下这道题的数据太水了,赛后看别人的代码很多连样例都过不了的竟然过了这道题。思路:这道题可以看成是判断密码锁和密码是否存在最长公共子序列。代码:#include<cstdio> #include<cstring&a...

2018-02-24 15:23:42

阅读数 73

评论数 0

hdu5691 dp+__builtin_popcount()

思路:定义dp【i】【j】:i状态下,以a[j]结尾的最大排列 ,i为0到1<<n。(用二进制的方式表示:如果该位上的数选择了,则对应位置位1,否则为0).状态转移:dp[i|(1<<k)][k]=max(dp...

2018-02-12 18:56:41

阅读数 100

评论数 0

蓝桥oj algo3 k好数

这应该算是数位dp的入门题了,比较简单,但可能做得比较少,所以一开始没想出来。 思路:对于一个k进制l位的数,除了最高位的每一位上都能填1到k-1这几个数(最高为不能填0),所以递推式是:dp[j][l]=Σdp[i][l-1](i!=j-1&&i != j+1),dp【j】【l...

2018-02-10 09:07:26

阅读数 93

评论数 0

背包变形 思路

居民集会 蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距离为di。 每年,蓝桥村都要举行一次集会。今年,由于村里的人口太多,村委会决定要在4个地方举行集会,其中3个位于公路中间,1个位最公路的终点。 已知每户家庭都...

2018-02-04 14:12:51

阅读数 124

评论数 0

LIS&LCS 线性结构dp

LIS 最长不下降子序列。递推式:dp[i]=max(dp[j])+1;(j hdu1160 题目是说老鼠的速度与其体重成反比,所以需要你输出一堆老鼠,它们的速度递减但是体重递增。 思路:首先对速度从大到小排序,接着对排序后的数组的体重求lis,路径输出需要熟练。 #include #inc...

2018-01-30 00:33:05

阅读数 83

评论数 0

树上的dp总结

这几天做了些树状dp的题目,现在总结i一下。树的最大独立集:这类题目大概是碰到最多的。独立集是指,一个图中的子点集,集合中的点都不相邻。题目一般会描述成给你一个树状关系,然后下属和上司不能同时出现,选出最多的人参加活动。递推式:dp[root][1]=Σdp[son][0],dp[root][0]...

2018-01-30 00:12:47

阅读数 134

评论数 0

poj1661 dp+dfs好题

对于dp加dfs的题目,一直不太熟练,要训练一下才行。这题思路不难想到,关键是怎么编程实现。 思路:从每块板(把最上面的点想象成一块长度为0的板)往下掉的的最短时间,必然是左边的下降的时间和右边下降时间取最短,然后递推式简单谢啦就是dp[seg_id][0]=min(dp[seg_id+1][0...

2018-01-26 09:43:28

阅读数 98

评论数 0

dp好题 hdu1176

这道题,网上很多代码都是错的(dp[loc][time]=max(dp[loc-1][time-1],dp[loc+1][time-1],dp[loc][time])+cake[loc][time]仔细一想就会发现,如果根本没有走到那个位置,而那个位置又会有馅饼掉下来,根据这个式子是会有记录的,然...

2018-01-25 18:29:01

阅读数 106

评论数 0

CodeForces - 793D DP+dfs

最近做DP做得有点多。。技巧和思路是提升了不少。但是还是会忽略不少细节,特别是dfs+dp的题目上。比如说这题,就出现了两个足以让人窒息的错误:1、数组d的值可能会是我初始化的负数,所以返回再求最小,必然是输出-1,所以需要在末尾加上一个判断它的正负。2、第二个就是数组下标的越界的导致的re问题,...

2017-12-06 12:55:33

阅读数 157

评论数 0

UVA1220树上的dp(最大独立集)

这题做的真是心力憔悴,主要还是对dfs的不熟悉吧。 主要思路:对于每一个节点,有选择和不选择两种情况。 如果是不选择,则它的儿子可以是不选择和选择,取最大值,即 ∑max(d[v][0],d[v][1]);(v为u的子节点); 如果选择,则它的儿子不能选择即,∑d[v][0]+1(加1为加上...

2017-12-05 11:57:59

阅读数 143

评论数 0

uva1025

这是一道 #include #include #include #include #define inf 0x3f3f3f3f using namespace std; const int maxn=300; int n,t,m1,m2,ti[maxn],ma[maxn],mb[maxn],d[...

2017-12-03 22:45:37

阅读数 76

评论数 0

最优矩阵链乘次序

推荐参考:http://blog.csdn.net/wuxiushu/article/details/51245313 还有高文宇老师的课件,并画几个矩阵帮助分析。 代码: /* r contains number of columns for each of the N matrice...

2017-12-03 00:16:02

阅读数 174

评论数 0

DAG上的动态规划两题

NYOJ16 嵌套矩形 其实就是刘汝佳紫书中的题目。而且不要求字典序输出。开始想着按照自己的思路写的,后来发现都错了,因为它的起点是不固定的,开始想当然以为起点固定。 思路:把输入的每个矩形当做是图的节点,然后将满足条件的二者建边,(如a能嵌套在b里面,则a与b之前建立一条由a到b的边)。然后...

2017-12-01 13:29:09

阅读数 188

评论数 0

回文串问题两题

51nod 1092 这道题其实不难,递归式子很容易想到,不过就是初始化可能缺少一些想法。。。把dp数组除0以外的位置都置为无穷大,然后一步步递归。这里需要注意到的是为了避免下标出现负数,这里我们的字符串数组从1开始输入。然后还要注意到的是,判断回文数用栈实现实在是太蠢了,直接两边往中间走就行了...

2017-11-25 15:56:06

阅读数 184

评论数 0

提示
确定要删除当前文章?
取消 删除