K-wolf Number (数位DP)
题意:求区间内有多少个数满足条件:任意相邻的k个数位都不相等。
思路:老套路
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
int bit[];
ll dp[][][][][][]; bool mycheck(int p[], int k, int newin) {
for(int i = ; i < k - ;i ++)
if(p[i] == newin) return false;
return true;
} ll dfs(int now, int p[], int k, bool flag) {
if(now <= -) return ;
if(!flag && dp[now][p[]][p[]][p[]][p[]][k] != -)
return dp[now][p[]][p[]][p[]][p[]][k]; int step = flag ? bit[now] : ;
ll ret = ;
for(int i = ; i <= step; i ++) {
if(mycheck(p, k, i)){
int newp[];
if(i == && p[] == ){
newp[] = newp[] = newp[] = newp[] = ;
}else{
newp[] = p[];newp[] = p[];
newp[] = p[];newp[] = i;
}
ret += dfs(now - , newp, k, flag && (i == step));
}
}
if(!flag) dp[now][p[]][p[]][p[]][p[]][k] = ret;
return ret;
} ll solve(ll n, int k){
if(n == ) return ;
int cnt = ;
while(n){
bit[cnt ++] = n % ;
n /= ;
}
int p[] = {, , , };
return dfs(cnt - , p, k, true);
} int main(){
ll l, r; int k;
memset(dp, -, sizeof(dp));
while(~scanf("%lld%lld%d", &l, &r, &k)){
printf("%lld\n", solve(r, k) - solve(l - , k));
}
return ;
}
K-wolf Number (数位DP)的更多相关文章
- 多校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 用作标记,当现在枚举的数小 ...
- codeforces Hill Number 数位dp
http://www.codeforces.com/gym/100827/attachments Hill Number Time Limits: 5000 MS Memory Limits: ...
- 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 ...
- HDU 3709 Balanced Number (数位DP)
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- beautiful number 数位DP codeforces 55D
题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...
- hdu 5898 odd-even number 数位DP
传送门:hdu 5898 odd-even number 思路:数位DP,套着数位DP的模板搞一发就可以了不过要注意前导0的处理,dp[pos][pre][status][ze] pos:当前处理的位 ...
- Fzu2109 Mountain Number 数位dp
Accept: 189 Submit: 461Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description One ...
- HDU5787 K-wolf Number 数位dp
分析:赛场上也知道是裸的数位dp,但是无奈刷数位dp题刷的太少了,并不能写出来 一点感想:赛后补题,看了题解的map记录状态,一脸蒙逼,也是非常的不爽,然后想看别人写的,不是递归就是写的比较乱 而且我 ...
- hdu_3565_Bi-peak Number(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3565 题意:给你一个区间,让你找这个区间内有两个山峰的数的最大和,什么是两个山峰,比如121121 ...
- HDU 5179 beautiful number 数位dp
题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5179 bc(中文): http://bestcoder.hdu.edu.cn/contes ...
随机推荐
- 树莓派apache2.4源码包安装
1.安装apr-1.6.3.tar.gz apr-util-1.6.1.tar.bz2 httpd-2.4.34.tar.gz (源码包下载centos7的就行,树莓派版本官方debian) 2.问题 ...
- Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置
Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置 [大型连续免费公开课]Oracle 18c rac+dg+13.3的em ...
- PXE:偷梁换柱,成功 启动 centos live
default menu.c32 timeout 1 ### 偷梁换柱,成功 label centos76-live menu label centos76-live from ftp kernel ...
- Nginx、haproxy反向代理设置
Nginx反向代理配置: #user nobody; worker_processes ; events { worker_connections ; } http { include mime.ty ...
- 解决:Windows安装Composer及全局配置时提示部分.dll结尾的php扩展文件找不到指定的模板
当安装Composer或者全局配置时出现.dll扩展文件找不到指定模板,如下图: 解决办法: 打开php.ini,将extension_dir 改为绝对路径即可 例如:
- nw.js---创建一个hello word的方法
一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...
- python2.7.X 升级至Python3.6.X
安装Python3 项目是在py3环境下进行编码的,正好yczhang默认的py版本是2,我们还需要安装py3才能让程序run起来,在此之前,需要安装开发工具包,因为要编译安装Python [root ...
- Content-Length mismatch, received 431737 bytes out of the expected 760836
可能原因是 composer 的安装包网址是国外镜像所致,被长城防火墙屏蔽了.可执行以下命令来解决:composer config -g repo.packagist composer https:/ ...
- javascript--面试题
(1)javaScript怎么清空数组? 如 var arrayList = ['a','b','c','d','e','f']; 怎么清空 arrayList 方法1:直接改变arrayList所指 ...
- Dagger2 导入项目
导入分为两步: 第一步: 在Project build.gradle 文件中加入: dependencies { // Dagger2 第一步classpath 'com.neenbedankt.gr ...