题目链接: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. json字符串参数

    jsp部分        json字符串的属性应该都是实体类的属性 function saveCashier(){ layer.closeAll(); var Reapply = document.g ...

  2. 【angular】angular实现简单的tab切换

    html: <div class="list-group" ng-repeat="tab in menuList"> <a href=&quo ...

  3. HTML5学习总结——本地存储

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  4. 诡异的数学,数字问题 - leetcode

    134. Gas Station 那么这题包含两个问题: 1. 能否在环上绕一圈? 2. 如果能,这个起点在哪里? 第一个问题,很简单,我对diff数组做个加和就好了,leftGas = ∑diff[ ...

  5. [JS]省市区数据及方法调用

    调用方法: function GetProvinceByid(id) { if (id == null || id == undefined || id == "") return ...

  6. Centos7下建立rubymine快捷方式到侧栏或桌面

    gnome桌面的所有菜单项都存储如下位置: /usr/share/applications/ 新建一个菜单项,直接在该目录下新建一个后缀名为.desktop的文件即可. $ vi /usr/share ...

  7. iOS导航标题不居中问题(转载)

    前言 一直以来都让我很头痛的一个问题:系统自带的导航条,在标题文字很长时,进入到下一个界面,而下一个界面的标题也很长时,就会出现标题不居中显示. 曾经,我尝试过很多种办法,但是都没有从根上解决问题.下 ...

  8. python json.load 的奇葩错误

    json.load() 可以参数是文件对象, 但是这种方式会遇到莫名其妙的错误: No JSON object could be decoded 有的朋友说的是utf-8编码有BOM和无BOM造成的. ...

  9. 【转】delphi 保存到txt文件

    procedure TForm1.btn1Click(Sender: TObject); var astr: string; sList: TStrings; path: string; begin ...

  10. Grunt使用教程(限winows)

    前提:安装nodejs 一. 打开dos命令窗口,输入命令 "node -v",确认nodejs安装成功 二. 其次,安装grunt-cli (该插件是grunt命令行插件),执行 ...