摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=5898 题意:求两个数中间的满足连续位是奇数的长度是偶数,连续位上是偶数的长度位奇数的数量。 分析:就是数位dp基本写法,dfs 的参数多加了个 a 表示连续位数的长度,flag表示上一位是否为奇数。 这里当奇偶改 阅读全文
摘要:
Beautiful numbers CodeForces - 55D 题意:定义能被自己所有位数整除的数字为美丽,给定一个区间,求区间内的美丽数字个数。 分析:首先,可以把限制条件转化为之前所有位数的最大公倍数,将pos,sum,lcm,up当作 dfs的条件和dp下标,然后 dp[ pos ][ 阅读全文
摘要:
https://cn.vjudge.net/problem/HDU-2089 题意: 题意:给定一个区间,求区间中不包含4、连续的62的数字有几个。 分析:基础的数位dp,利用开多维的dp数组和 dfs 的多个参数来实现各种限制条件,从高位到低位dfs,并且多用 if 判断,结尾 return 1。 阅读全文
摘要:
题意:买附件的前提是买了主件,问给定金额获得的最大价值。 分析:有依赖的背包模板题,注意有依赖的背包不是分组背包的那种三个for的顺序,而是枚举一个主件后,不断的枚举附件,而购买多个不同的附件。 同时,在写法上,用 f 数组表示答案数组,f 的每个 j 都是对应最优的决策,而每次枚举都在 t 数组上 阅读全文
摘要:
题意:有权值分别为1,2,3,4,5,6的大理石,每种都有若干块,能否把它们分成权值相等的2份。大理石的总数量不超过20000。(多重背包) 分析:判断dp[ V/2 ] ==V/2 即可,但过程如果用普通做法会超时,即多重背包当成01背包做效率很低,这时候要用二进制拆分优化,将复杂度变为 二进制拆 阅读全文