hdoj 2089 數字dp入門

2021-07-06 03:50:51 字數 842 閱讀 8277

題意:就是統計區間內沒有4和62的數的個數

分析:dp(i,0)表示i位數不存在不吉利數的個數,dp(i,1)表示i位數不存在不吉利數並且最高位為2的個數,dp(i,2)表示i位數存在不吉利數的個數

首先對dp陣列進行乙個預處理,處理出i位數出現上述情況的個數,統計的時候都有統計字首0

dp(i,0) = dp(i-1,0)*9-dp(i-1,1)       前面*9是減去4在首位的情況,後面是減去6在首位並且i-1位為2

dp(i,1) = dp(i-1,0)        

dp(i,2) = dp(i-1,2)*10+dp(i-1,0)+dp(i-1,1)       i-1位數是不吉利數的情況*首位的十個數,加上4在首位,i-1位為吉利數,加6在首位,i-1位為2的吉利數

接著就是分解n成i位數,統計i位數的情況

#include using namespace std;

int dp[10][3]; //dp(i,0)表示i位數不存在不吉利的數 dp(i,1)表示i位數最高位為2且不存在不吉利的 dp(i,2)表示i位數存在不吉利的數

void init()

}int solve(int n)

dig[cnt+1] = 0;

int ans = 0;

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

if(dig[i] == 4 || (dig[i+1] == 6 && dig[i] == 2))

flag = 1;

}return tmp - ans;

}int main()

return 0;

}

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

題意 求 l,r 區間內有多個數滿足不含62和4.這個題暴力也可以做因為範圍比較小。但是如果數的上限開到1e9或者更大就gg了。所以學習一種新的dp 數字dp。也沒學得怎麼樣。我的理解是 數字dp是按照構造數的方式,然後對數的每一位進行dp 舉乙個簡單的dp dp i j 表示的是第 i 位,前一位...

hdoj2089不要62(素數打表)

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

HDU 2089 數字 dp 入門

可暴力,可dp。參考資料 click me 第二個版本的 參考資料 7k 的板子 第二個版本 在下面 做這道題的時候有兩個疑問 第一 既然在dp中 51 既可以看做 51 也可以看做 0051 或者 000051 那麼51這個數字會不會計算多次。第二 既然狀態轉移保證了數字的合法,在統計的時候是否還...