CQOI2016 手機號碼

2022-03-27 06:32:40 字數 810 閱讀 4065

遞推版的數字dp

絕對的暴力美學

我們設\(dp[l][i][j][0/1][0/1][0/1]\)表示到了第\(l\)位,這一位上選擇的數是\(i\),\(l-1\)位選擇的數是\(j\),第乙個\(0/1\)代表\(4\)沒有/有出現過,第二個\(0/1\)代表\(8\)沒有/有出現過,第三個\(0/1\)代表連續三位沒有/有出現過

於是轉移很簡單了

但是卡位實在是鬼畜

我卡位的方式有些鬼畜,所以細節非常的多

#include#include#include#define re register

#define maxn 16

#define ll long long

ll l,r;

int a[maxn],num;

ll dp[maxn][11][11][2][2][2];

//位數,這一位上的數,上一位的數,0/1表示4/8有/沒有出現,0/1表示有/沒有連續三位

inline ll slove(ll x)

//分解數字

a[num+1]=-11,a[num+2]=11;

for(re int i=0;i<=9;i++)

for(re int j=0;j<=9;j++)

for(re int k=0;k<=9;k++)

//先初始化dp[3]之後再往下推

for(re int l=3;l=3;l--)//卡位,這裡保證從[l+1,num]和給定數是完全相等的

return ans;

}int main()

CQOI 2016 手機號碼

傳送門 求出 l,r l,r l,r 中,滿足 數的長度為 11 1111 號碼中要出現至少 3 33 個相鄰的相同數字 號碼中不能同時出現 8 88 和 4 44 的數的個數。1 010 l r 10 1110 l r 10 1010 l r 10 11。算是一道比較簡單的數字dp題。第乙個條件,...

CQOI2016 手機號碼

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

CQOI2016 手機號碼

題目大意 求 l,r 之間11位的數字個數,要符合要有三連數字,且 8 和 4 不能同時出現 看 吧 include include include include include define sc x scanf lld x typedef long long ll ll dp 11 11 11...