HDU 5898 odd-even number (数位DP)
来源:互联网 发布:王鸥为什么被黑 知乎 编辑:程序博客网 时间:2024/05/11 15:10
题意:
求l~r 连续的奇数个数有偶数个,连续偶数的个数有奇数个 的 数字个数
#include <map>#include <set>#include <queue>#include <cmath>#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll dp[20][5];int digit[20];/// 0 前导0/// 1 奇数的个数有奇数个/// 2 奇数的个数有偶数个/// 3 偶数的个数有奇数个/// 4 偶数的个数有偶数个ll dfs(int len,int limit,int status){ if(len<0) { if(status==2||status==3) return 1; return 0; } if(!limit&&dp[len][status]!=-1) return dp[len][status]; int last; if(limit) last=digit[len]; else last=9; ll ans=0; for(int i=0;i<=last;i++) { if(status==0) { if(i==0) ans+=dfs(len-1,0,0); else { if(i&1) ans+=dfs(len-1,limit&&i==last,1); else ans+=dfs(len-1,limit&&i==last,3); } } else if(status==1) { if(i%2) ans+=dfs(len-1,limit&&i==last,2); } else if(status==2) { if(i%2==0) ans+=dfs(len-1,limit&&i==last,3); else ans+=dfs(len-1,limit&&i==last,1); } else if(status==3) { if(i%2==0) ans+=dfs(len-1,limit&&i==last,4); else ans+=dfs(len-1,limit&&i==last,1); } else if(status==4) { if(i%2==0) ans+=dfs(len-1,limit&&i==last,3); } } if(!limit) dp[len][status] = ans; return ans;}ll solve(ll x){ memset(dp,-1,sizeof(dp)); int cnt=0; while(x!=0) { digit[cnt++]=x%10; x/=10; } return dfs( cnt-1, 1, 0 ) ;}int main(){ int t; scanf("%d",&t); for(int cs=1;cs<=t;cs++) { ll l,r; scanf("%lld%lld",&l,&r); printf("Case #%d: ",cs); printf("%lld\n",solve(r)-solve(l-1)); }}
阅读全文
0 0
- [hdu 5898 odd-even number] 数位DP
- Hdu-5898 odd-even number(数位DP)
- HDU 5898 odd-even number(数位dp)
- hdu 5898 odd-even number (数位dp)
- HDU 5898 odd-even number(数位dp)
- HDU 5898 odd-even number(数位DP)
- hdu 5898 odd-even number (数位dp)
- hdu 5898 odd-even number (数位dp)
- hdu 5898 odd-even number(基础数位DP)
- HDU 5898 odd-even number (数位DP)
- HDU odd-even number 数位dp
- hdu 5898 odd-even number 数位dp基础
- HDU 5898 odd-even number——数位dp
- hdu5898 odd-even number(数位dp)
- HDU5898 odd-even number(数位dp)
- hdu5898 odd-even number (数位DP)
- odd-even number (数位dp)
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- 经济学十大原理
- 人工智能(AI)积累
- Node概述
- 欢迎使用CSDN-markdown编辑器
- JAVA
- HDU 5898 odd-even number (数位DP)
- Error:(21) Error: "rc_real_time_join_notification" is not translated in "en" (English) [MissingTrans
- html5shiv.js分析
- angular2学习(官方angular-cli跟写)
- 数据库三范式的理解
- 寻找最长公共子串
- 年度总结
- 155. Min Stack
- java 代码点和代码单元