HDU-5787 數(shù)位DP [2016多校]

求區(qū)間[0,N]中有多少個(gè)數(shù)滿足以下條件:
任意K連續(xù)數(shù)位都是由不相同數(shù)字組成的沪伙;如數(shù)字23653(K=3)胧华,其所有K連續(xù)數(shù)位有{236, 365, 653}裁奇,都是不存在相同數(shù)位的也祠,既滿足條件。

DP[pos][s] 表示考慮到pos數(shù)位時(shí)琅束,以s作為最高K位的滿足條件的數(shù)的個(gè)數(shù);狀態(tài)轉(zhuǎn)移時(shí)只要保證新的數(shù)位與s的后K-1個(gè)數(shù)位不同即可算谈。這里記憶化搜索的狀態(tài)轉(zhuǎn)移過(guò)程其實(shí)我并沒(méi)有理解得很透徹涩禀,與直接遞推狀態(tài)的方式還是有比較大的區(qū)別,還是沒(méi)有掌握到其本質(zhì)然眼。

處理s需要特別得技巧艾船,因?yàn)樾枰苊鈱?01這種數(shù)位視作合法狀態(tài),所以在最高位保留一個(gè)1罪治,使其變成1001丽声,這樣中間重復(fù)的0就可以被檢查出來(lái);處理s的溢出位時(shí)觉义,直接將超出K-1位的數(shù)位保留成1即可雁社。

參考的題解:http://blog.csdn.net/ChallengerRumble/article/details/52103411

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int bit[30];
long long dp[30][20100];
int mod;
bool ok(int p, int x){
    //除最高位以外,不能有數(shù)位等于x
    while(p/10){ 
        if (p%10==x) return false;
        p /= 10;
    }
    return true;
}

long long dfs(int isTop, int pos, int notZero, int pre){
    if (pos == - 1) return 1;
    
    while(pre-mod/10 > mod/10) pre -= mod/10; 
    //這行使得pre保持前K-1的狀態(tài),并且在最高位留一個(gè)1

    if (!isTop&&dp[pos][pre] != -1) return dp[pos][pre];

    int lastBit = isTop ? bit[pos] : 9;
    long long ans = 0;
    for (int i=0;i<=lastBit;i++){
        if (!ok(pre,i)) continue;
        if (!notZero&&i==0) ans += dfs(isTop&&i==lastBit, pos-1, notZero, pre);
        else ans += dfs(isTop&&i==lastBit, pos-1, notZero+1, pre*10+i);
    }

    if (!isTop) dp[pos][pre] = ans;
    return ans;
}

long long calc(long long n){
    if (!n) return 1;
    int cnt = 0;
    while(n){
        bit[cnt++] = n%10;
        n /= 10;
    }
    memset(dp,-1,sizeof(dp));
    return dfs(1, cnt-1, 0, 1);
}

int main(){

    long long L,R;
    int K;
    while(~scanf("%I64d%I64d%d",&L,&R,&K)){
        mod = 1;
        for (int i=0;i<K;i++) mod *= 10; 
        printf("%I64d\n", calc(R)-calc(L-1));
    }

    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晒骇,隨后出現(xiàn)的幾起案子霉撵,更是在濱河造成了極大的恐慌,老刑警劉巖洪囤,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徒坡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘤缩,警方通過(guò)查閱死者的電腦和手機(jī)喇完,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剥啤,“玉大人锦溪,你說(shuō)我怎么就攤上這事不脯。” “怎么了刻诊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵防楷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我则涯,道長(zhǎng)复局,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任粟判,我火速辦了婚禮亿昏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浮入。我一直安慰自己龙优,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布事秀。 她就那樣靜靜地躺著彤断,像睡著了一般。 火紅的嫁衣襯著肌膚如雪易迹。 梳的紋絲不亂的頭發(fā)上宰衙,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音睹欲,去河邊找鬼供炼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窘疮,可吹牛的內(nèi)容都是我干的袋哼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼闸衫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涛贯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蔚出,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弟翘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后骄酗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體稀余,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年趋翻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睛琳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掸掏,靈堂內(nèi)的尸體忽然破棺而出茁影,到底是詐尸還是另有隱情,我是刑警寧澤丧凤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站步脓,受9級(jí)特大地震影響愿待,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜靴患,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一仍侥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸳君,春花似錦农渊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至囱挑,卻和暖如春醉顽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背平挑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工游添, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人通熄。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓唆涝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親唇辨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廊酣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自http://blog.csdn.net/wust_zzwh/article/details/52100392...
    扎Zn了老Fe閱讀 1,921評(píng)論 1 4
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,748評(píng)論 0 33
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法助泽,類相關(guān)的語(yǔ)法啰扛,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法嗡贺,異常的語(yǔ)法隐解,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,665評(píng)論 18 399
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 11,010評(píng)論 6 13
  • 今天的寫(xiě)作主題是婚姻。那我也來(lái)談?wù)勆磉吶说幕橐觥?昨天诫睬。單位定點(diǎn)的花店給辦公室的曾美女送來(lái)了一束鮮花煞茫。可是,她看見(jiàn)...
    ld熊壯壯閱讀 188評(píng)論 0 0