題目大意:求\([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][2][2][2];//dp[位置][上乙個的上乙個][上乙個][是否有4][是否有8][是否三連]
int a[105];
ll dfs(int pos, int llast, int last, bool if4, bool if8, bool if3, bool dflag, bool uflag)
if(!uflag && !dflag && last != -1 && llast != -1) dp[pos][llast][last][if4][if8][if3] = tmp;
return tmp;
}inline ll cal(ll x)
return cnt != 10 ? 0: dfs(cnt, -1, -1, 0, 0, 0, 1, 1);//10位 例如1000000000, 就不存在
}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 手機號碼
遞推版的數字dp 絕對的暴力美學 我們設 dp l i j 0 1 0 1 0 1 表示到了第 l 位,這一位上選擇的數是 i l 1 位選擇的數是 j 第乙個 0 1 代表 4 沒有 有出現過,第二個 0 1 代表 8 沒有 有出現過,第三個 0 1 代表連續三位沒有 有出現過 於是轉移很簡單了 ...