HDU 5898 odd-even number(2016 ACM/ICPC Asia Regional Shenyang Online)
2016-09-26 16:28
513 查看
题目分析
数位dp,记录下当前位置的奇数个数和偶数个数,遇到偶数,判断奇数是否合法,并且将奇数更新为0,同理遇到奇数也一样。注意前导0的判断。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; LL dp[20][20][20], bit[20]; LL dfs(int pos, bool zero, int ji, int ou, int limit){ if(pos < 1){ //如果到末位 if(!ji&&!ou) return 1; else if(ji && !ou) return ji%2==0; else if(!ji && ou) return ou&1; else return (ji%2==0)&&(ou&1); } if(!limit && dp[pos][ji][ou] != -1) return dp[pos][ji][ou]; LL ret = 0; int len = limit?bit[pos]:9; for(int i = 0; i <= len; i++){ if(i&1){ //如果为奇数 if((ou&1)||(ou==0)) ret += dfs(pos-1, false, ji+1, 0, limit&&i==len); } else{ if(i == 0){ //如果该位置为0 if(zero){ //且有前导0 ret += dfs(pos-1, true, 0, 0, limit&&i==len); } else if(ji%2==0){ ret += dfs(pos-1, false, 0, ou+1, limit&&i==len); } } else{ if(ji%2==0) ret += dfs(pos-1, false, 0, ou+1, limit&&i==len); } } } if(!limit) dp[pos][ji][ou] = ret; return ret; } LL solve(LL x){ int len = 0; while(x) bit[++len] = x%10, x /= 10; return dfs(len, true, 0, 0, true); } int main(){ int T; scanf("%d", &T); LL L, R; memset(dp, -1, sizeof(dp)); for(int kase = 1; kase <= T; kase++){ scanf("%I64d%I64d", &L, &R); printf("Case #%d: %I64d\n", kase, solve(R)-solve(L-1)); } return 0; }
相关文章推荐
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5898 odd-even number
- HDU 5898&&2016 ACM/ICPC Asia Regional Shenyang Online/ odd-even number [数位DP]【动态规划】
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5895&&2016 ACM/ICPC Asia Regional Shenyang Online1004 Mathematician QSC [矩阵加速+欧拉降幂]【数论】
- hdu 5900 QSC and Master 区间dp(2016 ACM/ICPC Asia Regional Shenyang Online)
- HDU 5900 QSC and Master(2016 ACM/ICPC Asia Regional Shenyang Online)
- HDU 5895 Mathematician QSC(逆元应用+矩阵快速幂+数论知识)——2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5901 Count Primes (模板 + 数论知识)——2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5900 QSC and Master(区间dp水题)
- 2016 ACM/ICPC Asia Regional Shenyang Online 1003/HDU 5894 数学/组合数/逆元
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5901 Count Primes (模板 + 数论知识)★
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC(矩阵快速幂+高次幂取模)★ ★
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- 【HDU5898 2016 ACM ICPC Asia Regional Shenyang Online G】【数位DP】odd-even number 范围内有多少数字满足奇串长为偶数偶串长为奇数.
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)——2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5894 hannnnah_j’s Biological Test
- 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp
- HDU 5894 hannnnah_j’s Biologica(lucas定理求组合数+乘法逆元)——2016 ACM/ICPC Asia Regional Shenyang Online