【數位DP】入門學習詳解
數位DP
什麼是數位DP
數位DP是DP的一種,顧名思義,按每一個數位來進行DP。
什麼時候使用
題目的要求與一個數字相關,並且它能通過每一個數位來進行轉移。
例題:求所有
怎麼使用
一般的DP是多維的,首先會有一維表示的是當前到了第幾位,通常情況這一維可以使用滾動。
其它的就是根據題目的實際要求了,如例題就需要一維來記錄除以
以例題為例,我們來講講數位DP怎麼實現。
狀態與轉移
我們設
一般是從高位往低位DP,因為最高位不能為
接著我們用第
想想怎麼轉移?
對於當前的餘數
根據同餘的性質,我們自然可以得到:餘數變成了
所以,狀態轉移方程如下:
最後的答案是什麼?
首先,第一維自然是
顯而易見,要求是
綜上所述,最後的答案是
更多拓展
相關推薦
【數位DP】入門學習詳解
數位DP 什麼是數位DP 數位DP是DP的一種,顧名思義,按每一個數位來進行DP。 什麼時候使用 題目的要求與一個數字相關,並且它能通過每一個數位來進行轉移。 例題:求所有nn位數中能被mm整除的數的個數。 怎麼使用 一般的DP是多維的
不要62 【數位dp的入門題】
不要62Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 50740 Accepted Submi
杭電 hdu 2089 不要62【數位dp】【入門】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 29117 Accepted Submiss
ural 1057 Amount of degrees 【數位dp】
ont ++ algorithm printf pre turn blog _id 數位dp 題意:求(x--y)區間轉化為 c 進制 1 的個數為 k 的數的出現次數。 分析:發現其滿足區間減法,所以能夠求直接求0---x 的轉化為 c 進制中
【數位DP】HDU 6156 Palindrome Function
amp int namespace bfd spl names name clu esp http://acm.hdu.edu.cn/showproblem.php?pid=6156 【AC】 1 #include<bits/stdc++.h> 2 us
【數位dp】hdu2089 不要62
clu scanf spa print algo std can dfs fin 好吧,雖然是道水題但是是第一次接觸數位dp所以還是要記錄一下。 其實就是因為如果按數的大小枚舉的話很不方便所以就按數位枚舉並進行記憶化。 #include<iostream> #
BZOJ2425 [HAOI2010]計數 【數位dp】
cpp urn 所有 namespace HA div n) != haoi2010 題目 你有一組非零數字(不一定唯一),你可以在其中插入任意個0,這樣就可以產生無限個數。比如說給定{1,2},那麽可以生成數字12,21,102,120,201,210,1002,1020
UOJ275 [清華集訓2016] 組合數問題 【Lucas定理】【數位DP】
++ first size dfs ns2 \n spa sca mod 題目分析: 我記得很久以前有人跟我說NOIP2016的題目出了加強版在清華集訓中,但這似乎是一道無關的題目? 由於$k$為素數,那麽$lucas$定理就可以搬上臺面了。 註意到$\binom{i}{j
bzoj 1833: [ZJOI2010]count 數字計數【數位dp】
struct ret include opera truct mes 計數 表示 cpp 非典型數位dp 先預處理出f[i][j][k]表示從後往前第i位為j時k的個數,然後把答案轉換為ans(r)-ans(l-1),用預處理出的f數組dp出f即可(可能也不是dp吧……)
bzoj 3209: 花神的數論題【數位dp】
clas tail code 花神的數論題 turn a* names blog nsh 參考:https://blog.csdn.net/sunshinezff/article/details/51049132 非典型數位dp 首先預處理,設f[i][j]為以0開頭的i位
BZOJ 1026 windy數【數位DP】
ctype ret += pac rst true bug ring fine 1026: [SCOI2009]windy數 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10142 Solved: 4712[Subm
【數位DP】題集
狀態 轉移 位置 長度 數位 一次 是否 php 統計 1.HDOJ2089 題意:求區間內不出現4和62的數的個數 解法:模板題 2.HDOJ3555 題意:求區間內不出現49的數的個數 解法:模板題 3.HDOJ5179 題意:對於一個十進制數,把每一位拆出來變成一個數
bzoj 3598: [Scoi2014]方伯伯的商場之旅【數位dp】
scan clu cpp ems turn htm main ostream spa 參考了這個http://www.cnblogs.com/Artanis/p/3751644.html,好像比一般方法好寫 大概思想就是先計算出把所有石子都合並到1位置的代價,這樣顯然有一些
Codeforces1073E Segment Sum 【數位DP】
題目分析: 裸的數位DP,注意細節。 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int mod = 998244353; 5 int k; 6 7 int dp[25][1024],sz[25]
【Java日誌】log4j配置詳解
#設定日誌的級別,以及日誌所使用的appender log4j.rootLogger=all, console, file ### 控制檯 ### log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.cons
#108-【數位DP】Bomb
Description 反恐怖主義分子在塵土中發現了一枚計時炸彈。 但是這次恐怖分子改進了定時炸彈。 計時炸彈的數字序列從1到N.如果當前數字序列包含子序列“49”,爆炸的力量將增加一點。 現在反恐怖主義分子知道數字N, 他們想要知道威力的最終點。 你能幫助他們嗎?
#107-【數位DP】不要62
Description 杭州人稱那些傻乎乎粘嗒嗒的人為62(音:laoer)。 杭州交通管理局經常會擴充一些的士車牌照,新近出來一個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。 不吉利的數字為所有含有4或62的號碼。
【數位dp】bzoj3131: [Sdoi2013]淘金
思路比較自然,但我要是考場上寫估計會寫掛;好像被什麼不得了的細節苟住了?…… Description 小Z在玩一個叫做《淘金者》的遊戲。遊戲的世界是一個二維座標。X軸、Y軸座標範圍均為1..N。初始的時候,所有的整數座標點上均有一塊金子,共N*N塊。 一
Investigating Div-Sum Property【數位DP】
Investigating Div-Sum Property UVA - 11361 題目傳送門 題目大意:輸入三個數a,b,k,問從a到b中有多少個數滿足數字能夠整除k,並且其數位和也能整除k。 解決方法:數位DP的模板題,Dp[x]表示在不超過x的數中
UVA - 11361 Investigating Div-Sum Property 【數位dp】
題目傳送門 題目描述:有t組測試資料(T < 100),每組測試資料輸入三個整數a,b,k,1 ≤ A ≤ B < 2 31 and 0 < K < 10000.求a~b中能夠整除k並且數位和也能夠整除k的數的個數。 解題思路:設f(x)表示不超過x的非負數中滿足