數字DP入門之hdu 3555 Bomb

2022-03-25 13:20:06 字數 855 閱讀 7269

hdu 3555 bomb

題意:

在1~n(1<=n<=2^63-1)範圍內找出含有 『49』的數的個數;

與hdu 2089 不要62的區別:2089是找不不含 '4'和 '62'的區間範圍內的數,此題是含有;正好相反,對於 "不要62"只是用第二位表示首位數字,這一題呢?

看轉化:易知一定要要知道首位是9的個數,才能在前面加4得到 '49',但是什麼狀態能從不含 '49'轉移到含 '49'?直接在不含'49'前加9,那麼就出現了三個狀態之間的遞推轉化,從而推出了第二維要使用三個狀態來得出長度為i時的所有情況;

二維的狀態:

[0]:只是不含 '49',不管首位(可以是9); [1]:不含 '49',但首位是9; [2]:含有 '49'

#includeusing

namespace

std;

#define rep(i,n) for(i = 0;i < (n);i++)typedef

long

long

ll;ll f[

25][3

];void

init()

}ll query(ll n)

,tot = 0

;

while

(n) ll ans = 0,flag = 1

;

for(int i = tot;i > 0;i--)

return

ans;

}int

main()

}

view code

hdu 3555 數字dp入門

題意 給定乙個long long型別能夠存下的數字n,統計1 n之間含有49的數字的個數 思路 初始版本 需要記錄當前位置,前一位置放了那個數字,當前是否已經包含49,是否有上界這四個資訊,也就是dfs的四個引數。dfs pos,pre,istrue,limit 其實這種做法有點相當於把普通的數字d...

hdu3555 數字dp 入門

題目大意 給乙個數字n,範圍在1 2 63 1,求1 n之間含有49的數字有多少個。思路 狀態轉移 dp i 0 代表長度為 i 並且不含有49的數字的個數 dp i 1 代表長度為 i 並且不含有49,但是最高位是9的數字的個數 dp i 2 代表長度為 i 並且含有49的數字的個數。陣列 a i...

hdu 3555數字DP 入門題

include include include include include include include include include include includeusing namespace std typedef long long ll define inf 0x3f3f3f3f ...