數字DP練習

2021-08-09 17:52:53 字數 1545 閱讀 2096

數字dp模板

hdu2089  不要62

題意:求區間中不含62且不含4的數的個數 

#include#include#includeusing namespace std;

int dp[20][10];

int a[20];

//sta 記錄上一位數是否是6

int dfs(int pos,int sta,bool limit)

if(!limit) dp[pos][sta]=ans;

return ans;

}int solve(int x)

return dfs(pos-1,0,true);

}int main()

printf("%d\n",solve(r)-solve(l-1));

} return 0;

}

hdu3555

和不要62差不多 

求1-n中包含49的數的個數

hdu3652

題意:統計1-n中含有13且能被13整除的數的個數 

#include#include#includeusing namespace std;

typedef long long ll;

int dp[10][15][2][10];//注意陣列大小

int a[20];

//pos位置

//mod 前面的數%13的結果

//sta 是否已經包含13

//pre 上一位的數

int dfs(int pos,int mod,int sta,int pre,bool limit)

if(!limit) dp[pos][mod][sta][pre]=ans;

return ans;

}int solve(int x)

return dfs(pos-1,0,0,0,true);

}int main()

return 0;

}

hdu5898

題意:統計l-r之間連續的奇數必須是偶數個,連續的偶數必須是奇數個。。的個數

#include#include#includeusing namespace std;

typedef long long ll;

int a[20];

ll dp[20][11][20];//dp[i][j][k]前i位上一位是j,連續的奇數/偶數個數為k

ll dfs(int pos,int sta,int pre,bool lead,bool limit )

} else if((sta+pre)%2) }

else }

if(!limit&&!lead) dp[pos][sta][pre]=ans;

return ans;

} ll solve(ll x)

return dfs(pos-1,10,1,true,true);

}int main()

}

小白演算法練習 數字dp模板

數字dp其實是很靈活的,所以一定不要奢求一篇文章就會遍所有數字dp的題,這一篇只能是講清楚一種情況,其他情況遇到再總結,在不斷總結中慢慢體會這個思想,以後說不定就能達到一看到題目就能靈活運用的水平。其實dp都是這樣 這一篇要說的數字dp是一道最簡單的數字dp 題目大意 多組資料,每次給定區間 n,m...

數字DP入門 數字DP模板

數字dp是一種計數用的dp,一般就是要統計乙個區間 le,ri 內滿足一些條件數的個數。所謂數字dp,字面意思就是在數字上進行dp咯。數字還算是比較好聽的名字,數字的含義 乙個數有個位 十位 百位 千位.數的每一位就是數字啦!之所以要引入數字的概念完全就是為了dp。數字dp的實質就是換一種暴力列舉的...

數字dp模版(dp)

1 include 2 include 3 include 4 include 5 6using namespace std 78 intt 9long long dp 19 19 2005 10 long long l,r 11int shu 20 12 13long long dfs int l...