CQOI2016 手機號碼

2021-10-05 03:09:41 字數 1324 閱讀 9991

題目描述

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

工具需要檢測的號碼特徵有兩個:號碼中要出現至少 33 個相鄰的相同數字;號碼中不能同時出現 88 和 44。號碼必須同時包含兩個特徵才滿足條件。滿足條件的號碼例如:13000988721、23333333333、14444101000。而不滿足條件的號碼例如:1015400080、10010012022。

手機號碼一定是 1111 位數,前不含前導的 00。工具接收兩個數 ll 和 rr,自動統計出 [l,r][l,r] 區間內所有滿足條件的號碼數量。ll 和 rr 也是 1111 位的手機號碼。

輸入格式

輸入檔案內容只有一行,為空格分隔的 22 個正整數 l,rl,r。

輸出格式

輸出檔案內容只有一行,為 11 個整數,表示滿足條件的手機號數量。

輸入輸出樣例

輸入 #1 複製

12121284000 12121285550

輸出 #1 複製

5說明/提示

樣例解釋:滿足條件的號碼: 12121285000、 12121285111、 12121285222、 12121285333、 12121285550。

資料範圍:10^\leq l\leq r<10^10

10≤l≤r<1011。

我們設dp[l][i][j][0/1][0/1][0/1]dp[l][i][j][0/1][0/1][0/1]表示到了第ll位,這一位上選擇的數是ii,l-1l−1位選擇的數是jj,第乙個0/10/1代表44沒有/有出現過,第二個0/10/1代表88沒有/有出現過,第三個0/10/1代表連續三位沒有/有出現過

於是轉移很簡單了

#include

using

namespace std;

typedef

long

long ll;

int num[12]

,len;

ll l,r,dp[11]

[11][

11][2

][2]

[2][

2];ll f

(int p,

int a,

int b,

bool c,

bool d,

bool _4,

bool _8)

ll calc

(ll x)

intmain()

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 手機號碼

遞推版的數字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...