bzoj 4521 Cqoi2016 手機號碼

2022-04-30 08:09:06 字數 720 閱讀 3153

感覺get到了一種數字dp的新姿勢,加一位表示當前要填的數有沒有限制(感覺以前的寫法都太蠢了).

這麼寫有兩個地方要注意:

1.每dp到一位時需要f[i][初始狀態]++,相當於這位前都是前導零(這道題我把前兩位填了兩個10作為初始狀態)。

2.因為有了1,所以初始狀態後的第一位不能填0,需要特判

f[i][j][k][l][p][q][o]表示填到第幾位,上上位和上位分別是什麼,4,8是否出現過,三個連續的是否出現過,以及當前位是否有限制。

#include#include#include#include#define ll long long

using namespace std;

ll pw[100];

ll f[20][11][11][2][2][2][2];

// 位數 上位 這位 4 8 出現0/1 限制0/1

ll solve(ll x)

for(int q=0;q<=ks;q++)

else }}

}}

} }ll ans=0;

for(int i=0;i<=9;i++)for(int j=0;j<=9;j++)for(int k=0;k<=1;k++)for(int l=0;l<=1;l++)for(int s=0;s<=1;s++)

return ans;

}ll l,r;

int main()

BZOJ 4521 Cqoi2016 手機號碼

人們選擇手機號碼時都希望號碼好記 吉利。比如號碼中含有幾位相鄰的相同數字 不含諧音不 吉利的數字等。手機運營商在發行新號碼時也會考慮這些因素,從號段中選取含有某些特徵的號 碼單獨 為了便於前期規劃,運營商希望開發乙個工具來自動統計號段中滿足特徵的號碼數 量。工具需要檢測的號碼特徵有兩個 號碼中要出現...

bzoj4521 CQOI2016 手機號碼

人們選擇手機號碼時都希望號碼好記 吉利。比如號碼中含有幾位相鄰的相同數字 不含諧音不吉利的數字等。手機運營商在發行新號碼時也會考慮這些因素,從號段中選取含有某些特徵的號碼單獨 為了便於前期規劃,運營商希望開發乙個工具來自動統計號段中滿足特徵的號碼數量。工具需要檢測的號碼特徵有兩個 號碼中要出現至少3...

BZOJ4521 Cqoi2016 手機號碼

人們選擇手機號碼時都希望號碼好記 吉利。比如號碼中含有幾位相鄰的相同數字 不含諧音不 吉利的數字等。手機運營商在發行新號碼時也會考慮這些因素,從號段中選取含有某些特徵的號 碼單獨 為了便於前期規劃,運營商希望開發乙個工具來自動統計號段中滿足特徵的號碼數 量。工具需要檢測的號碼特徵有兩個 號碼中要出現...