数位dp
growing_up_
这个作者很懒,什么都没留下…
展开
-
数位dp 模板 poj 2089
#include #define ll long long using namespace std; int n; int m; int dp[20][10]; int a[20]; int dfs(int pos,int pre,int state,bool limit) { if(pos==-1)return 1; if(!limit&&dp[pos][state]!=-1)r原创 2017-10-26 09:04:33 · 368 阅读 · 0 评论 -
hdu4734
int dp[20][10005]; int digit[20]; int getvalue(int a) { int i=0; int ans=0; while(a){ ans=ans+((a%10)*(1<<i)); i++; a/=10; } return ans; } int dfs(int pos,原创 2017-10-26 09:05:19 · 346 阅读 · 0 评论 -
poj3252注意前导0的影响
#include #define ll long long using namespace std; int n,m; int dp[50][50];//dp[i][j]表示枚举到第i位,前面0的个数和1的个数差,为了防止中间出现dp[i][j]为负数但有可能是合法结果,此处hash一下,dp[i][j]+32 //最后判断结果是否>=32判断该方案是否合法 int digit[50]; int原创 2017-10-26 09:07:02 · 226 阅读 · 0 评论 -
hdu3709 枚举
#include #define ll long long using namespace std; ll m,n; ll dp[20][2005][20]; int digit[20]; ll dfs(int pos,int state,int pivot,bool limit) { if(pos<=0)return state==0; if(state<0)return 0;原创 2017-10-26 09:09:37 · 184 阅读 · 0 评论