数位dp
zzti_xiaowei
xxx
展开
-
Hdu-4347 F(x)
[题目链接]思路:这个f(x)计算就和数位计算是一样的,就是加了权值,所以dp[pos][sum],这状态是基本的。a是题目给定的,f(a)是变化的不过f(a)最大好像是4600的样子。如果要memset优化就要加一维存f(a)的不同取值,那就是dp[10][4600][4600],这显然不合法。 这个时候就要用减法了,dp[pos][sum],sum不是存当前枚举的数的前缀和(加权的),而...原创 2018-04-23 21:40:50 · 298 阅读 · 0 评论 -
Hdu-2089 不要62
[题目链接]思路:打表+暴力枚举 很不错的想法,不过不是最好的,如果n≤1e7,将会无情的TLE。数位dp,真的很优雅~,值得学习。// 非常非常非常推荐我转载的一篇大佬写的数位DP总结,Orz、代码:#include<iostream>#include<cstdio>#include<cstring>#include<...原创 2018-04-20 10:27:36 · 428 阅读 · 0 评论 -
Poj-3255 Round Numbers
[题目链接] 一个数的二进制中0的数量要不能少于1的数量。// 非常非常非常推荐我转载的一篇大佬写的数位DP总结,Orz、思路1: // 自己想哒 16ms dp[pos][k]记录的是枚举到pos位,最多还能用k个1的数量。可用1的数量是随着枚举数不同而变化的。#include<iostream>#include<cstdio>#include...原创 2018-04-24 18:21:44 · 89 阅读 · 0 评论 -
Hdu-3709 Balanced Number
[题目链接]思路:枚举支点位置,然后分别数位dp求和。dp[pos][x][sta]:表示枚举到pos位,支点为x,当前力矩为sta的个数。状态转移:dp[pos][x][st]+=dp[pos-1][x][st+i*(pos-x)]。0被支点每个位置都会统计到,要减去重复的。代码:#include<iostream>#include<cstdio>...原创 2018-05-09 23:17:49 · 182 阅读 · 0 评论 -
Zoj-3962 Seven Segment Display
[题目链接]思路:数位dp,感觉可写的,结果一直WA,第一道Zoj的题,坑给了大数要%lld读入….dp[i][j]:表示数位枚举到第i位,和为j的总花费(从高位枚举)代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usi...原创 2018-05-08 14:53:19 · 151 阅读 · 0 评论 -
51nod-1043 幸运号码
[题目链接]思路:刚开始一看数位dp,好久没写了,递归模板拿出来摸一摸,然后掉进坑里了无限TLE,根本不需要啊!再然后,看了一下题解和自己想的差不多,一直写一直写,无限找bug,取模mod=1e9+10,麻蛋,加毛线的10啊~~ 用dp[i][j]表示i个数的和为j的总数,这里面是包括0开头的情形,有dp[i][j]=dp[i-1] [j-k] (k从0到9)。 很好想,i个数组...原创 2018-06-30 20:55:44 · 116 阅读 · 0 评论