HDU 5787 K-wolf Number(数位DP)
来源:互联网 发布:java可执行jar 编辑:程序博客网 时间:2024/06/05 18:57
Description
给出一个区间[L,R],问这个区间中任意相邻k个数位均不相同的数字个数
Input
多组用例,每组用例输入三个整数L,R,k,以文件尾结束输入
(1<=L<=R<=1e18,2<=k<=5)
Output
对于每组用例,输出[L,R]中满足条件的数字个数
Sample Input
1 1 2
20 100 5
Sample Output
1
72
Solution
数位DP,记录当前位前四位的值,枚举当前位数字时判断其与前面k-1个数字是否相同,不同才能放,注意一点是前置0的问题,为避免前置0与当前位放0冲突,可以将前置0赋为10
Code
#include<cstdio>#include<iostream>#include<cstring>using namespace std;typedef long long ll;ll dp[22][11][11][11][11],L,R;int k,a[22];bool check(int v1,int v2,int v3,int v4,int v){ if(k==2)return v!=v4; if(k==3)return v!=v4&&v!=v3; if(k==4)return v!=v4&&v!=v3&&v!=v2; if(k==5)return v!=v4&&v!=v3&&v!=v2&&v!=v1;}ll dfs(int pos,int v1,int v2,int v3,int v4,int fp){ if(pos==0)return v4!=10; if(!fp&&dp[pos][v1][v2][v3][v4]!=-1)return dp[pos][v1][v2][v3][v4]; int fpmax=fp?a[pos]:9; ll ans=0; for(int i=0;i<=fpmax;i++) { if(i==0&&v4==10)ans+=dfs(pos-1,10,10,10,10,fp&&i==fpmax); else if(check(v1,v2,v3,v4,i))ans+=dfs(pos-1,v2,v3,v4,i,fp&&i==fpmax); } if(!fp)dp[pos][v1][v2][v3][v4]=ans; return ans;}ll Solve(ll n){ int res=0; while(n) { a[++res]=n%10; n/=10; } return dfs(res,10,10,10,10,1);}int main(){ while(~scanf("%I64d%I64d%d",&L,&R,&k)) { memset(dp,-1,sizeof(dp)); printf("%I64d\n",Solve(R)-Solve(L-1)); } return 0;}
0 0
- HDU - 5787 K-wolf Number 数位DP
- Hdu-5787 K-wolf Number(数位DP)
- hdu-5787-K-wolf Number-数位DP
- HDU 5787 K-wolf Number 数位dp
- hdu-5787-K-wolf Number-数位DP
- HDU 5787 K-wolf Number (数位DP)
- HDU-5787 K-wolf Number(数位DP)
- HDU 5787 K-wolf Number(数位DP)
- 【HDU 5787】K-wolf Number(数位DP)
- hdu 5787 K-wolf Number (数位DP )
- hdu 5787 K-wolf Number(数位dp)
- HDU 5787 K-wolf Number(数位DP)
- HDOJ 5787 K-wolf Number 数位DP
- HDU 5787 wolf Number 数位dp
- HDU5787 K-wolf Number(数位DP)
- hdu5787 K-wolf Number【数位dp】
- HDU 5787 K-wolf Number
- HDU 5787 K-wolf Number
- yii2.0框架分页
- linux使用--13.ubuntu14.04下安装cgdb及程序调试
- 无限轮播
- servlet学习笔记---HttpServletRequest
- HashMap的工作原理jdk1.8-源码调试
- HDU 5787 K-wolf Number(数位DP)
- 11
- PHP php中spl_autoload详解
- python连接mysql数据库(Linux环境下)
- assert()语法讲解
- DFS深度优先搜索(入门)
- 大文件查找优化方案之倒排索引
- EAS BOS打补丁后,UI控件重复
- Invalid path /××× was requested 问题分析及解决方法