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