题目链接:hdu_5898_odd-even number

题意:

给你一个区间,问你这个区间中满足连续的偶数的位数为奇数,连续的奇数的位数是偶数的个数

题解:

设dp[i][j][k][l]为考虑当前第i位,上一位的奇偶性为j,已经连续了k位,是否有前导零

然后记忆化搜就行了

 #include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
typedef long long ll; int dig[],len;
ll dp[][][][]; ll dfs(int pos,int pre=,int ln=,bool inf=,bool ze=)//pre 1为奇,0为偶
{
if(!pos)
{
if(pre)return (ln&)==;
else return ln&;
}
if(!inf&&dp[pos][pre][ln][ze]!=-)return dp[pos][pre][ln][ze];
int en=inf?dig[pos]:;ll ans=;
F(i,,en)
{
if(i&)
{
if(ze)
{
if(i==)ans+=dfs(pos-,,,inf&&i==en,);
else ans+=dfs(pos-,,,inf&&i==en,);
}
else if(pre==)
{
if(ln&)ans+=dfs(pos-,,,inf&&i==en,ze);
}else if(pre==)
{
ans+=dfs(pos-,,ln+,inf&&i==en,ze);
}
}else
{
if(ze)
{
if(i==)ans+=dfs(pos-,,,inf&&i==en,);
else ans+=dfs(pos-,,,inf&&i==en,);
}
else if(pre==)ans+=dfs(pos-,,ln+,inf&&i==en,ze);
else if(pre==)
{
if((ln&)==)ans+=dfs(pos-,,,inf&&i==en,ze);
}
}
}
if(!inf)dp[pos][pre][ln][ze]=ans;
return ans;
} int main(){
int t,ic=;ll l,r;
scanf("%d",&t);
while(t--)
{
memset(dp,-,sizeof(dp));
scanf("%lld%lld",&l,&r),l--;
for(len=;l;l/=)dig[++len]=l%;
ll tp=dfs(len);
for(len=;r;r/=)dig[++len]=r%;
printf("Case #%d: %lld\n",ic++,dfs(len)-tp);
}
return ;
}

hdu_5898_odd-even number(数位DP)的更多相关文章

  1. 多校5 HDU5787 K-wolf Number 数位DP

    // 多校5 HDU5787 K-wolf Number 数位DP // dp[pos][a][b][c][d][f] 当前在pos,前四个数分别是a b c d // f 用作标记,当现在枚举的数小 ...

  2. hdu 5898 odd-even number 数位DP

    传送门:hdu 5898 odd-even number 思路:数位DP,套着数位DP的模板搞一发就可以了不过要注意前导0的处理,dp[pos][pre][status][ze] pos:当前处理的位 ...

  3. codeforces Hill Number 数位dp

    http://www.codeforces.com/gym/100827/attachments Hill Number Time Limits:  5000 MS   Memory Limits: ...

  4. HDU 5787 K-wolf Number 数位DP

    K-wolf Number Problem Description   Alice thinks an integer x is a K-wolf number, if every K adjacen ...

  5. Fzu2109 Mountain Number 数位dp

    Accept: 189    Submit: 461Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description One ...

  6. HDU 3709 Balanced Number (数位DP)

    Balanced Number Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  7. beautiful number 数位DP codeforces 55D

    题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...

  8. FZU - 2109 Mountain Number 数位dp

    Mountain Number One integer number x is called "Mountain Number" if: (1) x>0 and x is a ...

  9. BNU 13024 . Fi Binary Number 数位dp/fibonacci数列

    B. Fi Binary Number     A Fi-binary number is a number that contains only 0 and 1. It does not conta ...

  10. hdu 5898 odd-even number(数位dp)

    Problem Description For a number,if the length of continuous odd digits is even and the length of co ...

随机推荐

  1. mysql数据一致性检查及修复

    percona-toolkit-2.2.20-1.noarchmysql 5.6.29-logmaster:192.168.166.129slave:192.168.166.131 一.创建数据库校验 ...

  2. nginx(2)

    上一篇: nginx(1) 负载均衡: linux集群的一种常见方式,即由多台服务器组成一个服务器集合实现某个特定需求,其中每台服务器都是等价的,从而实现负载均摊的目的. 反向代理: 是指以代理服务器 ...

  3. 使用visualvm 远程监控 JVM

    1. 测试环境 Ubuntu Server 10.01 2.  在服务器上安装 jstatd 组件 使用apt-get 命令安装 openjdk 即可 : sudo apt-get install o ...

  4. homebrew for mac

    注意 如果bash_profile 文件路径写错了,而导致很多命令不能使用 可以在终端 /usr/bin/vim ~/.bash_profile    打开编辑  esc退出  按冒号(:)再按wq ...

  5. HDU 4520 小Q系列故事——最佳裁判

    Time Limit : 500/200ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Problem Description 过 ...

  6. 超实用 JS 代码段笔记(一)

    序1:30段简单代码段(有删减) 1 . 区分 IE 和 非 IE 浏览器 if(!+[1,]){ console.log('ie浏览器'); }else{ console.log('非ie浏览器') ...

  7. linux 发送带附件的邮件

    一.mutt命令 1.安装 yum -y install mutt 2.使用 echo "mail content"|mutt -s "mail title"  ...

  8. HUD 1171 Big Event in HDU(01背包)

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  9. jquery 操作listbox 左右相互选择

    实现左右两个listbox的相互选择功能 代码如下: function ListBox_Move(listfrom, listto) { var size = $j("#" + l ...

  10. swift label不同颜色、不同字体

    let string = "点击注册按钮,即表示您已同意隐私条款和服务协议" let ranStr = "同意" let attrstring:NSMutabl ...