HDU 5787 K-wolf Number(数位DP)

时间:2022-09-01 13:23:03

【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5787

【题目大意】

  求区间【L,R】内十进制数相邻k位之间不相同的数字的个数。

【题解】

  很显然的数位dp,但是状态不知道该怎么转移,然后发现了递归数位DP这种神奇的姿势,每次记录前k位的数字,然后枚举下一位能用的数字,递归即可。

【代码】

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int N=25,M=10005;
int bit[N],pw[5],k;
ll dp[N][M][2][2],l,r;
ll DP(int d,int x,bool f,bool lim){
int c[5];
if(d==-1)return 1;
ll &ret=dp[d][x][f][lim];
if(~ret)return ret; ret=0;
int st=k-1,y=x,pos=0;
for(int i=0;i<k;i++)c[i]=y%10,y/=10;
if(!f){while(!c[st]&&st>=0)st--;}
for(int i=st;i>=0;i--)pos|=1<<c[i];
int up=lim?bit[d]:9;
for(int i=0;i<=up;i++){
if(pos>>i&1)continue;
if(f)ret+=DP(d-1,(x-pw[k-1]*c[k-1])*10+i,f,lim&&i==up);
else if(st==-1&&!i)ret+=DP(d-1,0,0,lim&&i==up);
else ret+=DP(d-1,x*10+i,st==k-2,lim&&i==up);
}return ret;
}
ll Cal(ll x){
if(!x)return 1;int cnt=0;
while(x)bit[cnt++]=x%10,x/=10;
memset(dp,-1,sizeof(dp));
return DP(cnt-1,0,0,1);
}
int main(){
for(int i=pw[0]=1;i<5;i++)pw[i]=pw[i-1]*10;
while(~scanf("%lld%lld%d",&l,&r,&k)){
k--;printf("%lld\n",Cal(r)-Cal(l-1));
}return 0;
}

  

HDU 5787 K-wolf 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&period;4352&period;XHXJ&&num;39&semi;s LIS&lpar;数位DP 状压 LIS&rpar;

    题目链接 \(Description\) 求\([l,r]\)中有多少个数,满足把这个数的每一位从高位到低位写下来,其LIS长度为\(k\). \(Solution\) 数位DP. 至于怎么求LIS, ...

  3. 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 ...

  4. hdu 5898 odd-even number 数位DP

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

  5. HDU 3709 Balanced Number &lpar;数位DP&rpar;

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

  6. HDU 5179 beautiful number 数位dp

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5179 bc(中文): http://bestcoder.hdu.edu.cn/contes ...

  7. hdu 5898 odd-even number&lpar;数位dp)

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

  8. HDU 5898 odd-even number &lpar;数位DP&rpar; -2016 ICPC沈阳赛区网络赛

    题目链接 题意:一个数字,它每个数位上的奇数都形成偶数长度的段,偶数位都形成奇数长度的段他就是好的.问[L , R]的好数个数. 题解:裸的数位dp, 从高到低考虑每个数位, 状态里存下到当前位为止的 ...

  9. 2017&quot&semi;百度之星&quot&semi;程序设计大赛 - 复赛1005&amp&semi;&amp&semi;HDU 6148 Valley Numer【数位dp】

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  10. HDU 4352 - XHXJ&&num;39&semi;s LIS - &lbrack;数位DP&rsqb;&lbrack;LIS问题&rsqb;

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

随机推荐

  1. Etw EventSourceProvider&lowbar;EventsProducer&period;cs OopConsoleTraceEventListenerMonitor&lowbar;TraceControllerEventsConsumer&period;cs

    // EventSourceProvider_EventsProducer.cs /* /r:"D:\Microshaoft.Nuget.Packages\Microsoft.Diagnos ...

  2. HTML5- Canvas入门(六)

    已经第六章了,也差不多接近尾声,如果你从第一章耐心follow到本章结束,那你便能掌握canvas的大部分知识点(当然如果要精通,还是得多靠练习,做一些小案例). 今天我们要学习的是canvas的变形 ...

  3. ASP&period;NET MVC 插件化机制

    概述 nopCommerce的插件机制的核心是使用BuildManager.AddReferencedAssembly将使用Assembly.Load加载的插件程序集添加到应用程序域的引用中.具 体实 ...

  4. xml报文的装配解析

    xstream dom 将map自动转化为xml报文 http://blog.csdn.net/lisheng19870305/article/details/45847985 报文的通信

  5. SQL函数大全&lpar;字符串函数&rpar;&period;

    SQL Server 2005  函数大全 字符串函数 字符串函数 SubString在SQL和C#中不同, 一,select  substring('abcde',-1,3) select LEN( ...

  6. Linux系统中C&amp&semi;Cpp程序开发(一)

    之前一直在Windows系统下进行程序的设计,近期开始学习使用Linux系统,因而打算将程序开发也转移到Linux系统下.今天先简单介绍一下该系统下的C程序开发步骤. 首先要预先安装vim和gcc工具 ...

  7. 2017-2-19 C&num;基础 数据类型

    数据类型分为基本数据类型和引用类型.基本数据类型分为两大类,值类型,字符型(char)和布尔型(bool).其中值类型分为整型和浮点型.整型分为byte,short,int,long.常用的是int( ...

  8. Mac中配置nvm

    1.安装 nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash 安装成功默认将 ...

  9. Json中Date映射到model

    @DateTimeFormat(pattern="yyyy-MM-dd") private Date nenddate; public Date getNenddate() { r ...

  10. 8-安装Kafka

    1.解压 tar -zxvf kafka_2.11-0.9.0.1.tar -C /opt/app/ 2.改权限 chown -R hadoop:hadoop /opt/app/ 3.修改配置文件 c ...