ACM_数位DP
深海沧澜夜未央
这个作者很懒,什么都没留下…
展开
-
POJ 3252 Round Numbers(数位 DP 先导零的处理)
这题的约束就是一个数的二进制中0的数量要不能少于1的数量,通过上一题,这题状态就很简单了,dp[pos][num],到当前数位pos,0的数量减去1的数量为num的方案数,一个简单的问题,中间某个pos位上num可能为负数(这不一定是非法的,因为我还没枚举完嘛,只要最终的num>=0才能判合法,中途某个pos就不一定了),这里比较好处理,Hash嘛,最小就-32吧(好像),直接加上32,把32当0转载 2017-10-17 20:20:05 · 373 阅读 · 0 评论 -
HDU 1561 The more, The Better - 依赖背包+树形dp基础
题意: 给一个树形结构,问最多拿max个城市 ,能获得的最大价值多少,拿下面的一定要先拿上面的。 解题思路: 定义状态dp[i][j] : 当前i节点及其子树下最多选择j个城市的最大值为dp[i][j]; 我们考虑到特殊状态:i节点下没有孩子那么dp[i][2,3,4,5...]均为-1(因为多选总比少选好,并且选择完后城市总是有剩余) 1. 判断当前节点P有没有孩子,如果有则令当转载 2017-10-22 17:14:36 · 215 阅读 · 0 评论 -
HDU 3709 Balanced Number(数位DP)
题意:给定区间[a,b],求区间内平衡数的个数。所谓平衡数即有一位做平衡点,左右两边数字的力矩想等。 思路:遍历每一位做为平衡点,进行搜索,sum保存数字乘以距离的和,若sum为0,则说明平衡。 要注意因为遍历了len次,所以0多加了len-1次。 还有个小技巧是当sum #include #include #include using namespace std; typede转载 2017-10-14 19:29:59 · 195 阅读 · 0 评论 -
HDU 2089 不要62(数位DP入门+模板)
入门题。就是数位上不能有4也不能有连续的62,没有4的话在枚举的时候判断一下,不枚举4就可以保证状态合法了,所以这个约束没有记忆化的必要,而对于62的话,涉及到两位,当前一位是6或者不是6这两种不同情况我计数是不相同的,所以要用状态来记录不同的方案数。 dp[pos][sta]表示当前第pos位,前一位是否是6的状态,这里sta只需要去0和1两种状态就可以了,不是6的情况可视为同种,不会影响计数原创 2017-10-15 20:55:01 · 234 阅读 · 0 评论 -
HDU 4734 数位DP 小水
题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,然后给出a,b求区间[0,b]内满足f(i) 常规想:这个f(x)计算就和数位计算是一样的,就是加了权值,所以dp[pos][sum],这状态是基本的。a是题目给定的,f(a)是变化的不过f(a)最大好像是4600的样子。如果要转载 2017-10-16 10:52:40 · 372 阅读 · 2 评论 -
2018年全国多校算法寒假训练营练习比赛(第二场) G 送分了QAQ(数位DP 或打表区间 水)
题目描述 杭州人称傻乎乎的人为62,而嘟嘟家这里没有这样的习俗。 相比62,他那里的人更加讨厌数字38,当然啦,还有4这个 数字!所以啊,嘟嘟不点都不想见到包含38或者4的数字。 每次给出一个区间[n,m],你能找到所有令人讨厌的数字吗? 输入描述: 多组输入输出; 输入的都是整数对n、m(0 如果遇到都是0的整数对,则输入结束。 输出描述: 对于每次的输入 输出全部令人讨原创 2018-01-29 10:43:10 · 263 阅读 · 0 评论