source:
迎接新學期——超級easy版熱身賽
題意:要求一段區間[n,m]上的所有的數中滿足以下條件的數的個數:數的各位中不能出現4,且不能出現連續的62。
思路:數字dp
關於數字dp:
這類題一般是關於求解一段區間中滿足一些數字條件的數的個數,這些條件往往是與數字、進製有關的,比如要求數的k進製表示下有n個1,數的k進製下各位加權和不大於n等等。其處理方法是:求滿足條件數的個數時要用dfs一位一位地確定,並且關鍵是要使用dp陣列記憶已算出的結果,再列舉到相同情況時直接返回dp陣列中的計數即可,外加一些優化,比如memset外提(像hdu4734一題用到)等。
dp陣列的設定一般為dp[pos][sta],pos為目前列舉第幾位,sta為狀態變數因題而異。而涉及到數字列舉邊界一般是用乙個limit變數解決判定問題。
此題為入門題,**如下:
#include#include#includeusing namespace std;
int a[20];
long long dp[20][2];
long long dfs(int pos,int sta,int limit)
if(!limit) dp[pos][sta]=ans;
return ans;
}long long f(int x)
return dfs(i-1,0,1);
}int main()
return 0;
}
HDU2089 不要62 數字DP
problem description 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 ...
Hdu2089 不要62 數字dp
include includeint dp 10 3 dp i 0 為位數小於等於i且不含62也不含4的數字的個數 dp i 1 為位數為i且首位為2且不含62也不含4的數字的個數 dp i 2 為位數小於等於i且含62或4的數字的個數 int digit 10 void er int wei in...
hdu 2089 不要62 (數字dp)
思路 用變數記錄吉利數,和最高位為2的吉利數還有不是吉利數的個數。code include include includeusing namespace std int dp 10 3 dp i j i表示位數,j表示狀態 dp i 0 表示不存在不吉利數字 dp i 1 表示不存在不吉利數字,且最...