HDU 2089 不要62(基礎數字dp)

2022-06-01 01:18:12 字數 977 閱讀 3809

**題意:**

給出乙個範圍 $(l,r)$ , 要求計算該範圍中 滿足 其中連續兩位不為62, 並且不包含4 的符合條件個數。

**思路:**

在用數字dp寫之前發現自己以前用暴力的方法過去了....(就直接列舉然後除餘 4 和 64)所以明明做過一道數字dp的題,卻對數字dp毫無印象..

關於數字dp:在數字上計數用的dp,一般就是要統計乙個區間$[l,r]$內滿足一些條件數的個數。

這邊部落格寫的很詳細:[數字dp入門](

數字dp的記錄一般為:$dp[number][state]$ ,即數字個數, 以及不同題目中對應的狀態。

乙個$solve()$函式處理讀入 數的所有位數值,並存於乙個 陣列中。

然後 $dfs(int \space pos,int \space pre,int \space state,int \space limit)$ 記錄轉移中 列舉的第幾個數字,其前一位值, 當前為哪一種狀態 ,以及當前位列舉上限。

然後具體細節就看**了...有註解

code:

```ruby

#include #include #include #include using namespace std;

int a[20];

int dp[20][2];

//對於乙個數 n 找到從1 ~ n 的所有非法情況數目。

//當前位,前導位,狀態數,上限

//state表示上一位是否為6

int dfs(int pos,int pre,int state,bool limit)

if(!limit) dp[pos][state] = tmp;

return tmp;

}int solve(int x)

//位數,前導初始化-1..

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

}int main()

}

hdu 2089 不要62(數字)

problem description 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 ...

hdu2089 不要62(基礎數字dp)

題意 規定乙個合法的號碼不能含有4或者是連續的62 給定區間 n,m 問此區間內合法的號碼的個數 分析 數字dp dp i j 代表 最高位為 j 的 i 位數有多少個合法的 然後按題目規則進行轉移即可 dp結束後,再統計範圍內的總數,最後打表輸出 include include include u...

HDU2089 不要62 數字DP

problem description 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 ...