數字DP HDU 2089 不要62

2021-07-22 22:13:01 字數 810 閱讀 7370

簡單的數字dp

數字dp的簡單思想

從低位到高位開始列舉

每次狀態有兩種 即 到當前位與上限n一模一樣 和 到當前位已經小於n

那麼就可以列舉當前位進行轉移

因為 到當前位與上限n一模一樣 只有一種狀況 所以不特意儲存 **中dp陣列都表示 到當前位已經小於n

dp[2] 表示 已經出現62

dp[1] 表示 上一位是6

dp[0] 表示其他

記乙個flag表示 n前幾位是否出現62

以及記得考慮4不能用

#include#include#include#include#define cl(x) memset(x,0,sizeof(x))

using namespace std;

typedef long long ll;

inline char nc()

return *p1++;

}inline void read(ll &x)

int a[25],len; ll n;

ll dp[25][3];

ll ans;

const int val=;

inline ll sum(ll n)elseelse if (a[i]<=6)else}}

if (a[i]==4) flag2=1;

if (a[i]==2 && a[i-1]==6) flag=1;

} return dp[len][0]+dp[len][1];

}int main()

return 0;

}

數字DP HDU2089 不要62

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

數字DP Hdu 2089 不要62

ps 博主又水blog,是佳龍大神叫我幹的。乙個數被稱為吉利 手動滑稽 當且僅當其不含4和62。多次詢問乙個區間的吉利的個數。這題應該算是數字dp的裸題吧。考慮求出乙個固定長度出現的吉利數,然後分別考慮每一位就可以了。設f i 0 1 2 表示長度為 i 的吉利個數,首位為2的吉利個數,不吉利的個數...

數字DP HDU 2089 不要62

include include include include include include include include include include include include define inf 0x3f3f3f3f using namespace std typedef long...