摘要: 题意:共有 N 道菜,每道菜有一个满意值,小明要吃 M 道菜,其中有 K 种组合可以让小明连续吃下他们后获得额外的满意值,求最大满意值。 分析:因为菜的数量只有18,而且要考虑先后连续的顺序和吃 M 道菜停止 ,就要想到要明确表示出小明吃菜的状态,就可以用状压DP来做。状态用总的状态(二进制的sta 阅读全文
posted @ 2019-08-27 11:14 *Zzz 阅读(211) 评论(0) 推荐(0) 编辑
摘要: https://vjudge.net/problem/POJ-3666 题意:将一条路上的坑坑洼洼修补成单调的,求最小费用。 分析:明显是线性dp, 如图,但 j 的数据太大, 就sort 一下用坐标表示达到离散化,并且每次找所有小于 j 的 k 的最小值,时间复杂度会变成三次方,所以要用Min 在 阅读全文
posted @ 2019-08-27 11:10 *Zzz 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题意:有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小。 分析:只有15门课,可以通过状压,暴力枚举每一种情况,并且在DP的时候要记录路径,方便之后的输出。 一维状压dp的写法:先枚举所有状态,再枚举每门课,如果这门课 阅读全文
posted @ 2019-08-27 10:46 *Zzz 阅读(305) 评论(0) 推荐(0) 编辑
摘要: https://ac.nowcoder.com/login?callBack=%2Facm%2Fcontest%2F889%2FD%3F%26headNav%3Dacm 题意:给定长度为n 的数组{a i }和总和sum。 请找到{a i }的子集,使得子集的总和为sum,输出选取方案的01序列。 阅读全文
posted @ 2019-08-27 10:28 *Zzz 阅读(249) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=5898 题意:求两个数中间的满足连续位是奇数的长度是偶数,连续位上是偶数的长度位奇数的数量。 分析:就是数位dp基本写法,dfs 的参数多加了个 a 表示连续位数的长度,flag表示上一位是否为奇数。 这里当奇偶改 阅读全文
posted @ 2019-08-27 10:16 *Zzz 阅读(163) 评论(0) 推荐(0) 编辑
摘要: Beautiful numbers CodeForces - 55D 题意:定义能被自己所有位数整除的数字为美丽,给定一个区间,求区间内的美丽数字个数。 分析:首先,可以把限制条件转化为之前所有位数的最大公倍数,将pos,sum,lcm,up当作 dfs的条件和dp下标,然后 dp[ pos ][ 阅读全文
posted @ 2019-08-27 01:03 *Zzz 阅读(254) 评论(0) 推荐(0) 编辑
摘要: https://cn.vjudge.net/problem/HDU-2089 题意: 题意:给定一个区间,求区间中不包含4、连续的62的数字有几个。 分析:基础的数位dp,利用开多维的dp数组和 dfs 的多个参数来实现各种限制条件,从高位到低位dfs,并且多用 if 判断,结尾 return 1。 阅读全文
posted @ 2019-08-27 00:24 *Zzz 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题意:买附件的前提是买了主件,问给定金额获得的最大价值。 分析:有依赖的背包模板题,注意有依赖的背包不是分组背包的那种三个for的顺序,而是枚举一个主件后,不断的枚举附件,而购买多个不同的附件。 同时,在写法上,用 f 数组表示答案数组,f 的每个 j 都是对应最优的决策,而每次枚举都在 t 数组上 阅读全文
posted @ 2019-08-27 00:07 *Zzz 阅读(277) 评论(2) 推荐(0) 编辑
摘要: 题意:有权值分别为1,2,3,4,5,6的大理石,每种都有若干块,能否把它们分成权值相等的2份。大理石的总数量不超过20000。(多重背包) 分析:判断dp[ V/2 ] ==V/2 即可,但过程如果用普通做法会超时,即多重背包当成01背包做效率很低,这时候要用二进制拆分优化,将复杂度变为 二进制拆 阅读全文
posted @ 2019-08-27 00:04 *Zzz 阅读(455) 评论(0) 推荐(0) 编辑