CQOI 2016 手機號碼

2021-09-16 22:08:21 字數 979 閱讀 7412

傳送門

求出 [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題。

第乙個條件,根據資料範圍,只需注意一點小細節就行了。

第二個,只用記錄下上乙個數上乙個數的上乙個數,在dp的時候判斷一下就行了。

第三個,用兩個 boo

lbool

bool

記錄是否出現 4

44 和 8

88,在最後判斷一下就可以了

還有就是要注意,由於數的長度是 11

1111

,所以第一位不能填 000。

#include

#include

#include

#define ll long long

using

namespace std;

int a[20]

;ll f[20]

[20][

20][2

][2]

[2][

2];ll dp

(int p,

int last,

int last,

bool flag,

bool four,

bool eight,

bool limit)

ll solve

(ll x)

intmain()

CQOI2016 手機號碼

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

CQOI2016 手機號碼

遞推版的數字dp 絕對的暴力美學 我們設 dp l i j 0 1 0 1 0 1 表示到了第 l 位,這一位上選擇的數是 i l 1 位選擇的數是 j 第乙個 0 1 代表 4 沒有 有出現過,第二個 0 1 代表 8 沒有 有出現過,第三個 0 1 代表連續三位沒有 有出現過 於是轉移很簡單了 ...

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...