HDU2089 不要62 數字Dp

2021-08-27 04:02:14 字數 708 閱讀 4740

給定區間[l,r],統計區間內不含62(連在一起)或4的數的個數。

數字dp。所謂數字dp,就是一種優化平常數數的方式,而平常數數,則是一種dfs的過程,所以數字dp就是dfs+記憶化搜尋。在搜尋過程中,需要傳3個量,(len,if6,limit),len表示當前的數字,if6表示上一位是否為6,limit表示上一位是否到了最高位。對於每一位上的列舉,上界為:若上一位到了最高位,則這一位上界也只能到這一位的最大值,否則就是9(數字最大為9),下界就是從0開始;對於遞迴的下界,若len=0,即到了個位,則找到乙個,所以返回1;對於題目要求,若當前列舉到2且上一位是6,或列舉到4,直接continue;這樣就統計了0~n的符合題意的數的個數,記為solve(n),則答案為solve(r)-solve(l-1)。

#include using namespace std;

typedef long long ll;

int digit[20];

ll f[20][2];

ll dfs(int len,bool if6,bool limit)

if (!limit) f[len][if6]=cnt;

return cnt;

}ll solve(ll num)

return dfs(k,false,true);

}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 表示不存在不吉利數字,且最...