2016 ACM/ICPC Reginal Shengyang hdu5898 odd-even number(上下要统一,前导0)★
来源:互联网 发布:php curl 超时设置 编辑:程序博客网 时间:2024/05/29 02:23
题目非常明白,一个数如果连续的奇数的个数都为偶数,而连续的偶数的个数都为奇数,那么则符合条件,要求计算出给定的区间里面所有的符合条件的数的数量
题解:
dp【i】【j】【k】分别代表当前位置,值的奇偶,长度奇偶,套一边模板就ok。不过要注意前导0的问题,还有就是下面记忆化搜索记录值时也要加上前导0的判断。
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <cstdlib>#include <algorithm>#include <cmath>#include <vector>#include <set>#include <list>#include <queue>#include <map>#include <bitset>using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-3#define maxn 1000100#define MOD 1000000007long long dp[35][2][2];int bit[35];long long L,R;long long dfs(int pos,int st,int len,int zero,int flag){ if(!pos) return zero && ((st&1)&&!len || (!st&&(len&1))); if(flag && zero && dp[pos][st][len] != -1) return dp[pos][st][len]; int u = flag?9:bit[pos]; long long ans = 0; for(int i = u; i >= 0; i--) { if(!zero) { if(i == 0) ans += dfs(pos-1,0,0,0,flag||i<u); else ans += dfs(pos-1,i&1,1,1,flag||i<u); } else if(!st) { if(i%2 == 0) ans += dfs(pos-1,0,len^1,1,flag||i<u); else if(len & 1) ans += dfs(pos-1,1,1,1,flag||i<u); } else { if(i & 1) ans += dfs(pos-1,1,len^1,1,flag||i<u); else if(!len) ans += dfs(pos-1,0,1,1,flag||i<u); } //if(pos == 1) // printf("%d %lld\n",i,ans); } if(flag && zero) dp[pos][st][len] = ans; return ans;}long long solve(long long x){ int len = 0; while(x) { bit[++len] = x % 10; x /= 10; } return dfs(len,0,0,0,0);}int main(){ int t,C = 1; memset(dp,-1,sizeof(dp)); scanf("%d",&t); while(t--) { scanf("%lld%lld",&L,&R); printf("Case #%d: %lld\n",C++,solve(R)-solve(L-1)); } return 0;}
0 0
- 2016 ACM/ICPC Reginal Shengyang hdu5898 odd-even number(上下要统一,前导0)★
- [hdu5898]ACM/ICPC Reginal Shengyang
- hdu5898 odd-even number
- hdu5898 odd-even number
- hdu5898 odd-even number(数位dp)
- HDU5898 odd-even number(数位dp)
- hdu5898 odd-even number (数位DP)
- 2016 ACM/ICPC Reginal Shengyang hdu 5893 List wants to travel(树链剖分 线段树区间更新真蛋疼)★
- 2016 ACM/ICPC Reginal Shengyang hdu 5894 hannnnah_j’s Biological Test (数学推导 Lucas)
- 【HDU5898 2016 ACM ICPC Asia Regional Shenyang Online G】【数位DP】odd-even number 范围内有多少数字满足奇串长为偶数偶串长为奇数.
- 2016 ACM/ICPC Reginal Shengyang hdu 5900 QSC and Master (老是忘记枚举第三层循环)
- HDU5898 odd-even number (数位DP)shenyang网赛
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Reginal Shengyang hdu 5892 -Resident Evil 二维树状数组 + 状态压缩
- hdu5898 odd-even number 【数位DP】
- hdu5898 odd-even number(数位dp)
- hdu5898 odd-even number(数位DP)
- MySql(27)------如何了解数据库各种sql的执行频率
- 没有JavaScript的基础,我可以学习Angular2吗?
- ES6之Object.assign
- 数组System.arraycopy
- 解决用户注销后点击浏览器返回刷新页面重复登录的问题
- 2016 ACM/ICPC Reginal Shengyang hdu5898 odd-even number(上下要统一,前导0)★
- Server Tomcat v7.0 Server at localhost failed to start.怎么处理
- STLINK V2安装使用详解
- 编写代码规范
- redis作为缓存服务器
- 使用 Yocto Project 构建自定义嵌入式 Linux 发行版
- Java 8的新特性—终极版
- hdu 5900 区间dp
- 遇见C++ Lambda