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