ps:博主又水blog,是佳龍大神叫我幹的。
乙個數被稱為吉利(手動滑稽)當且僅當其不含4和62。
多次詢問乙個區間的吉利的個數。
這題應該算是數字dp的裸題吧。
考慮求出乙個固定長度出現的吉利數,然後分別考慮每一位就可以了。設f
[i][
0/1/
2]表示長度為
i 的吉利個數,首位為2的吉利個數,不吉利的個數。
轉移方程就不難求出:
f[i][0]=9*f[i-1][0]-f[i-1][1];//除了4當前位有9種選擇,但要排除62的情況
f[i][1]=f[i-1][0];//只有首位為2的選擇
f[i][2]=f[i-1][0]+f[i-1][1]+f[i-1][2]*10;//可以有4和62的選擇,如果已經不是吉利數則可以放任意數
接下來按位討論一下就可以了。
#include
using namespace std;
int f[10][3],n,m;
void work()
}int check(int
x) a[tot+1]=0;
for (int i=tot;i>=1;i--)
if (a[i]==4||(a[i+1]==6&&a[i]==2)) pd=1;
}return ans;
}int main()
}
數字DP HDU2089 不要62
problem description 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 ...
數字DP HDU 2089 不要62
簡單的數字dp 數字dp的簡單思想 從低位到高位開始列舉 每次狀態有兩種 即 到當前位與上限n一模一樣 和 到當前位已經小於n 那麼就可以列舉當前位進行轉移 因為 到當前位與上限n一模一樣 只有一種狀況 所以不特意儲存 中dp陣列都表示 到當前位已經小於n dp 2 表示 已經出現62 dp 1 表...
數字DP HDU 2089 不要62
include include include include include include include include include include include include define inf 0x3f3f3f3f using namespace std typedef long...