【HDU2089】不要62(數位DP入門題)
Description
給定,,求到的所有整數中及不含’4’也不含’62’的數的個數。
Solution
直接數位DP即可。。。
Source
/****************************
* Au: Hany01
* Prob: [HDU2089] 不要62
* Date: Feb 19th, 2018
* Email: [email protected]
****************************/
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
typedef vector<int> VI;
#define rep(i , j) for (int i = 0 , i##_end_ = j; i < i##_end_ ; ++ i)
#define For(i , j , k) for (int i = (j) , i##_end_ = (k) ; i <= i##_end_ ; ++ i)
#define Fordown(i , j , k) for (int i = (j) , i##_end_ = (k) ; i >= i##_end_ ; -- i)
#define Set(a , b) memset(a , b , sizeof(a))
#define SZ(a) ((int)(a.size()))
#define ALL(a) a.begin(), a.end()
#define pb(a) push_back(a)
#define mp(a, b) make_pair(a, b)
#define INF (0x3f3f3f3f)
#define INF1 (2139062143)
#define Mod (1000000007)
#define y1 wozenmezhemecaia
#ifdef hany01
#define debug(...) fprintf(stderr , __VA_ARGS__)
#else
#define debug(...)
#endif
inline void File() {
#ifdef hany01
freopen("hdu2089.in" , "r" , stdin);
freopen("hdu2089.out" , "w" , stdout);
#endif
}
template<typename T> inline bool chkmax(T &a, T b) { return a < b ? a = b, 1 : 0; }
template<typename T> inline bool chkmin(T &a, T b) { return b < a ? a = b, 1 : 0; }
inline int read() {
register char c_; register int _ , __;
for (_ = 0 , __ = 1 , c_ = getchar() ; !isdigit(c_) ; c_ = getchar()) if (c_ == '-') __ = -1;
for ( ; isdigit(c_) ; c_ = getchar()) _ = (_ << 1) + (_ << 3) + (c_ ^ 48);
return _ * __;
}
const int maxl = 9;
int dp[maxl][2], cnt, a[maxl];
int dfs(int pos, int pre, int sta, int lmt) //'pre' stands for the last number, 'sta' stands for whether the last number is '6'.
{
if (!pos) return 1;
if (!lmt && dp[pos][sta] >= 0) return dp[pos][sta];
register int tmp = 0;
For(i, 0, lmt ? a[pos] : 9) if ((pre != 6 || i != 2) && i != 4) tmp += dfs(pos - 1, i, i == 6, lmt && i == a[pos]);
if (!lmt) dp[pos][sta] = tmp;
return tmp;
}
inline int Solve(int t)
{
cnt = 0;
while (t) a[++ cnt] = t % 10, t /= 10;
return dfs(cnt, -1, 0, 1);
}
int main()
{
File();
register int n, m; Set(dp, -1);
while (n = read(), m = read(), n || m) printf("%d\n", Solve(m) - Solve(n - 1));
return 0;
}
相關推薦
【HDU2089】不要62(數位DP入門題)
Description 給定mm,nn,求mm到nn的所有整數中及不含’4’也不含’62’的數的個數。 Solution 直接數位DP即可。。。 Source /*************
2018.09.29【HDU2089】不要62(數位DP)
傳送門 解析: 今天突然發現自己還沒寫過數位DPDPDP入門題。。。 思路: 我們從高位向低位DP,採用記憶化搜尋。 初始化fff陣列為−1-1−1,因為我們可能DPDPDP到某個狀態是沒有合法數的。
HDU2089——不要62(數位dp入門)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 35612 Accepted Submiss
【Hdu2089】不要62(數位DP)
退出 -m math 數組 down clas code size amp Description 題目大意:給定區間[n,m],求在n到m中沒有“62“或“4“的數的個數。 如62315包含62,88914包含4,這兩個數都是不合法的。 0<n<=m<1
【hdu2089】不要62 數位dp
傳送門:嘿原題在這 註釋寫的很詳細啦 #include<iostream> #include<cstdio> #include<cstring> using
HDU2089 ------不要62(數位dp)
判斷 tom name pop iostream blank 位置 play show 不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others
HDU2089 不要62(數位DP)
傳送門 【題目分析】 和windy數一題類似,不過限制條件改為了連續的62和4,列舉當前位填的數字的時候判斷一下即可。 【程式碼~】 #include<bits/stdc++.h> using namespace std; typedef long long LL; co
hdu2089 不要62(數位dp模板)
ac程式碼:#include<iostream> #include<cstring> #include<algorithm> #define r(n) scanf("
hdu2089 不要62 (數位DP)
hdu2089 刷DP ,經典數位DP 思路: 1. 確定狀態 dp[ i ] [ j ] 表示i位數,在第i位上 以數值j開頭的值 ,含有符合情況的數的個數
HDU 2089 不要62(數位DP)
註意 break 大小 printf bre 表示 += 理解 ini 題意:求[n,m]內所有數字中不出現4也不出現連續62的數的個數。 輸入:n m,多組數據,以0 0結尾。 輸出:符合條件的數的個數。 限制:(0<n≤m<1000000) 時間:1000
【hdu2089】不要62
string sin 範圍 完全 std iostream ont 初始化 不同的 驚奇地發現今天居然和dalao的題單重了不少23333333333333 這是我第一次做數位dp,感覺這個題目還是比較茲磁的 #include<iostream> #i
HDU - 2089 不要62(數位DP)
include scrip panel ans using 交通 += init 遇到 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 題目: Problem Description 杭州人稱那些傻乎乎粘嗒嗒的人
hdu--2089 不要62(數位DP的入門題目)
題目連結:不要62 不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 53366
2018.09.29【BZOJ1026】【洛谷P2657】【SCOI2009】windy數(數位DP)
洛谷傳送門 解析: 由於資料範圍很小(相對於大部分數位DPDPDP題來說)。 我們只記錄當前位,當前位數字,是否是前導0,是否達到上界。 簡單DP記憶化搜尋一下就好了。 程式碼: #include
HDU 2089 不要62【數位DP入門題】
pan eps ava con 所有 數據 strong mon sub 不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi
2018.11.07【校內模擬】異或(數位DP)(數學期望)
傳送門 解析: 蒟蒻考場上只想了隨機情況下的期望,於是就拿了部分分滾粗了。。。 其實最優情況下的期望我好像還推錯了,最後學習了標解才會的。 我好菜啊。。。希望今年NOIP不要打醬油就行了。 思路: 首先隨機的情況其實非常好想。我們只需要考慮每個位出現
2018.09.29【洛谷P2106】Sam數(數位DP)(矩陣快速冪)
傳送門 解析: 其實這種只用位數轉移的數位DPDPDP,大概都可以用矩陣快速冪推。本質原因是每層的轉移方程與這是第幾層無關,比如這道題。 思路: 可以發現一個很顯然的情況,就是上面說的,這道題可以矩陣
【Poj3133】Manhattan Wiring (插頭DP)
但是 之間 main man sin pri cstring urn break Description 題目大意:給你個N x M(1≤N, M≤9)的矩陣,0表示空地,1表示墻壁,2和3表示兩對關鍵點。現在要求在兩對關鍵點之間建立兩條路徑,其中兩條路徑不可相交或者自交(
【CCF】有趣的數 數位dp
clu 有趣 sizeof clas tdi return CA queue In 【思路】 dp[i][j]表示前i個數為第j種狀態,考慮6種狀態 0: 出現且僅出現 2 1: 出現且僅出現 2 0 2: 出現且僅出現 2 3 3: 出現且僅出現 2 0 1 4: 出現且
【POJ】1935 Journey(樹形dp)
scan AR urn vector 答案 span ace CA include 題目 傳送門:QWQ 分析 涼涼。 答案是所有要經過的點到根所經過的邊權和減去最大的邊權。 代碼 vector好慢啊 #include <