HDU 2089 數字 dp 入門

2021-06-21 00:18:26 字數 2132 閱讀 9756

可暴力,可dp。

參考資料:click me~~

第二個版本的**參考資料:7k+ 的板子

第二個版本**在下面

做這道題的時候有兩個疑問

第一:既然在dp中 51 既可以看做 51 也可以看做 0051 或者 000051 ,那麼51這個數字會不會計算多次。

第二:既然狀態轉移保證了數字的合法,在統計的時候是否還要繼續判斷。

首先 dp 的意義 dp[i][j] 表示 i 長度 開頭為 j 的數字的數量

關於第乙個疑問。在dp中 0051 當然是在dp[3][0] dp[4][0] .. 中各計算一次。

但是我們統計的時候只統計了一次。

統計是這樣的,我們只統計比 n 小的數字,先找最高位比 n 小的數字,比如 n=160, 051 這個數字最高位就小於他了,我們統計了一次,當我們統計到第2位的時候,這個意義是在最高位相同的情況下,這一位比 160 小的數字, 這樣,我們統計的就是 151 這個數字,而不是051了,當然,每個數字都只統計了一次。

第二:dp[i][j] 只保證 j 開頭 長度為i 的數字合法,不保證長度比他大的依然合法。。當然要判斷一下。

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

#define read freopen("acm.in","r",stdin)

#define write freopen("acm.out","w",stdout)

#define ll long long

#define ull unsigned long long

#define pii pair#define pdi pair#define pdd pair#define mii map::iterator

#define fst first

#define sec second

#define ms(x,d) memset(x,d,sizeof(x))

#define inf 0x3f3f3f3f

#define all(x) x.begin(),x.end()

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define root 0,n-1,1

#define pb push_back

#define for(a,b,c) for(int a=b;a>l>>r&&l&&r)

{cout《這個**統計的是 <= n 的數字

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

#define read freopen("acm.in","r",stdin)

#define write freopen("acm.out","w",stdout)

#define ll long long

#define ull unsigned long long

#define pii pair#define pdi pair#define pdd pair#define mii map::iterator

#define fst first

#define sec second

#define ms(x,d) memset(x,d,sizeof(x))

#define inf 0x3f3f3f3f

#define all(x) x.begin(),x.end()

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define root 0,n-1,1

#define pb push_back

#define for(a,b,c) for(int a=b;a>l>>r&&l&&r)

cout<

HDU 2089 數字dp入門

開始學習數字dp.一道昨天看過 思想的題今天打了近兩個小時.最後還是看了別人的 找bug.丟丟 傳說院賽要取消 這麼菜不出去丟人也好吧 include include include include include includeusing namespace std int n,m 數字dp 含6...

數字DP入門題 HDU 2089

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

HDU 2089 不要62(數字DP入門)

執著追求並從中得到最大快樂的人,才是成功者。梭羅 第一次做這個題是暴力過的,感覺也沒啥,今天集訓講數字dp,想用數字dp做一下。自己還真是菜的扣腳啊 寫一下題解如果有錯誤希望指正!不勝感激。原題鏈結 f i j i代表有幾位數,j代表起始數字 例如f 3 1 代表的是 100 199 即使是2 63...