日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

“kuangbin带你飞”专题计划——专题十五 数位DP

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “kuangbin带你飞”专题计划——专题十五 数位DP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

博客:

題目:

1.(題解傳送門-待消化)Beautiful numbers CodeForces - 55D

2.【待完成】XHXJ's LIS HDU - 4352 :

3.(沒有題解)不要62 HDU - 2089 :

4.(題解傳送門-待消化!)Bomb HDU - 3555 :

5.(題解傳送門)Round Numbers POJ - 3252 :

6.【題解傳送門】Balanced Number HDU - 3709 :

7.(題解傳送門-待消化)B-number HDU - 3652?:

8.(題解傳送門-待總結)F(x) HDU - 4734 :

9.【待完成】BCD Code ZOJ - 3494 (數位DP+AC自動機):

10.(題解傳送門)吉哥系列故事――恨7不成妻 HDU - 4507 :

11.(題解傳送門)Balanced Numbers SPOJ - BALNUM :

?

平時訓練遇到的數位DP

?1. 2021暑假牛客多校第一場F題(數位DP,好題)


寫在前面:

這篇博客寫的很隨便,因為已經習慣了markdown,這種編輯方式真難受,水完了事,能看懂就行,排版就完全管了。

  • 開始時間:2021-06-07
  • 專題傳送門:https://vjudge.net/article/187[kuangbin帶你飛]專題1-23
  • 首次接觸數位DP,可以先了解一下它的形式,然后變刷題邊思考其原理,最后刷完這個專題之后再總結提煉一下它的思想

博客:

  • 我的總結:DP基礎知識總結
  • 難度判斷: [kuangbin帶你飛]專題十五 數位DP
  • 帶佬的總結:【數位dp】 Step by Step、[總結]數位統計模板

題目:

1.(題解傳送門-待消化)Beautiful numbers CodeForces - 55D

  • 題意:給定兩個數l,r(1<=l<=r<=9e18),求[l,r]間漂亮數的個數(漂亮數:能被所有非0數位整除的數)
  • 關鍵詞:數位DP,模板

2.【待完成】XHXJ's LIS HDU - 4352 :

????????1. 題意題解參考博客:hdu_4352_XHXJ's LIS(數位DP+狀態壓縮)

? ? ? ? 2. 嚴格遞增

3.(沒有題解)不要62 HDU - 2089 :

  • 題意:統計區間 [a,b] 中不含 4 和 62 的數字有多少個。(0<a<=b<=1e6)
  • 題解:sb題,暴力

4.(題解傳送門-待消化!)Bomb HDU - 3555 :

  • 題意:給一個數n(1<=n<=2^63-1),然后求出1~n中49子數和(比如49249=2,490302=1)
  • 關鍵詞:數位DP,模板

5.(題解傳送門)Round Numbers POJ - 3252 :

  • 關鍵詞:數位DP,前導0的處理?

6.【題解傳送門】Balanced Number HDU - 3709 :

  • ?提示:枚舉中心點
  • 關鍵詞:枚舉中心點,數位dp,好題

7.(題解傳送門-待消化)B-number HDU - 3652?:

  • 題意:找出1~n有多少個數既含有13又能被13整除。(1<=n<=1e9)
  • 關鍵詞:數位DP,模板,深搜DFS

8.(題解傳送門-待總結)F(x) HDU - 4734 :

  • 題意:定義數??,定義函數?,然后,給出一個區間 [A,B](0<=A,B<1e9),求區間 [0,B] 內滿足F(i)<=F(A) 的 i 的個數。
    多組輸入(T<=10000)。
  • 關鍵詞:數位DP,模板題,數位DP總結1

9.【待完成】BCD Code ZOJ - 3494 (數位DP+AC自動機):

? ? ? ? 1. 涉及AC自動機,等學字符串的時候再來看這里吧

? ? ? ? 2. 題意參考:zoj 3494(ac自動機+數位dp)

? ? ? ??

10.(題解傳送門)吉哥系列故事――恨7不成妻 HDU - 4507 :

  • 題意:多組輸入T<=50,每個區間[L,R]。1<=L<=R<=1e18
  • 關鍵詞:數位DP,dfs,進階模板題
  • 收獲&總結:

11.(題解傳送門)Balanced Numbers SPOJ - BALNUM :

  • 關鍵詞:數位DP+好題+排除前置0的干擾!!!!?

平時訓練遇到的數位DP

?1. 2021暑假牛客多校第一場F題(數位DP,好題)

  • 題意:求[L,R]內的友好數的個數,(1<=L<=R<=1e18)。
  • 友好數的定義:把這個數看作字符串,存在非空子串表示的數能被3整除,那么這個數為友好數,否則不為友好數。
  • 帶有前導0的子字符串被認為是合法的。
  • 題解:數位DP。
  • 一些提示(因為懶得梳理):
  • 首先找dp數組,dp[pos][last0][last1][last2],last0,1,2分別表示以pos數結尾的上一位是否有0,1,2的余數。
  • 最后判斷一個數,如果沒有前導0而且last0=0的時候既表示友好數
  • 如果已經!lead的時候last0為1,那么后面的last0都為1
  • 具體看代碼??傊⒁舛喾矫嫠伎?/li>
  • 代碼:
  • #include <bits/stdc++.h> #define int long long #define dbg(x) cout << #x << "===" << x << endl using namespace std;int l, r; int dp[22][2][2][2]; // dp[pos][last0][last1][last2] int t[5]; int a[22], cnt; //前導0無影響 int dfs(int pos, int k0, int k1, int k2, bool lead, bool limit) {if (pos == -1) return k0 && (!lead);if (!limit && !lead && dp[pos][k0][k1][k2] != -1)return dp[pos][k0][k1][k2];int res = 0;int up = limit ? a[pos] : 9;for (int i = 0; i <= up; i++) {t[0] = t[1] = t[2] = 0;t[(0 * 10 + i) % 3] = 1;if (k1) t[(1 * 10 + i) % 3] = 1;if (k2) t[(2 * 10 + i) % 3] = 1;if (!lead && k0) t[0] = 1;res += dfs(pos - 1, t[0], t[1], t[2], lead && (i == 0),limit && (i == a[pos]));}if (!lead && !limit) dp[pos][k0][k1][k2] = res;return res; } int solve(int x) {cnt = 0;while (x) {a[cnt++] = x % 10;x /= 10;}return dfs(cnt - 1, 0, 0, 0, true, true); }signed main() {int T;cin >> T;memset(dp, -1, sizeof(dp));while (T--) {cin >> l >> r;// dbg(solve(r));// dbg(solve(l - 1));int ans = solve(r) - solve(l - 1);// cout << ">>>>";cout << ans << endl;}return 0; }

    某次任務——數位dp分享

    1. 收獲很多啊。果然將知識講出來效果最好。

    總結:1.1 把數位DP整個過程看作遍歷一棵樹的過程。

    1.2?dp[][]表示的是樹上某一個節點能到達的滿足條件的葉子節點的數。

    1.3?從暴力到數位dp優化的是樹上結點的數目,我們把同一層的點權相同的節點合并。

    2. 詳見我的ppt:?數位dp——某次隊內分享任務

    3. 理解這一顆樹的過程:

    ?

    總結

    以上是生活随笔為你收集整理的“kuangbin带你飞”专题计划——专题十五 数位DP的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。