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 ...
随机推荐
- 使用docker安装tomcat服务
1. 拉取官方tomcat镜像 docker pull tomcat 2. 创建tomcat容器目录 [root@WSyHRQ171356 /]# mkdir /tomcat/test 3. 创建测试 ...
- 使用100%面向过程的思维方式来写java程序
1.java是强制写class关键字的语言,不能有独立的函数游离在类外出现在文件中,这和python c++ 都不同,后面的都可以单独在类外写函数,所以java被称为是纯面向对象的语言,py和c++都 ...
- 关于Kafka broker IO的讨论
Apache Kafka是大量使用磁盘和页缓存(page cache)的,特别是对page cache的应用被视为是Kafka实现高吞吐量的重要因素之一.实际场景中用户调整page cache的手段并 ...
- LeetCode - 768. Max Chunks To Make Sorted II
This question is the same as "Max Chunks to Make Sorted" except the integers of the given ...
- CSS属性选择器和部分伪类
p[name]{background:red;} 只使用属性名p[name=ghr]{background:red;} 指定属性名,并指定了该属性的属性值p[name~=old]{background ...
- 新Windows本地提权漏洞学习(CVE-2019-0841)
1.这是一个啥漏洞? 睁眼一看,妈呀本地提权,快加入本地提权漏洞利用包里,速度加入.github连接我就不发了.担心被认为是传播黑客工具,咱们在这里单纯学习一下漏洞的原理和部分源代码. 2.文件读写权 ...
- IntelliJ IDEA 2018.3.2无法正常输入字符问题解决方案
昨天升级IDEA的版本到2018.3.2,今天打开项目发现只要在代码编辑器输入字符(英文.符号或中文等)都会立刻被强制删除,造成一个无法正常输入的现象(回车换行可以).仔细观察这种想象后发有可能是代码 ...
- 剑指offer题目java实现
Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 package Problem2; public class SingletonClass { /* * ...
- itoa()函数
itoa()函数 itoa():char *itoa( int value, char *string,int radix); 原型说明: value:欲转换的数据.string:目标字符串的地址.r ...
- ruby离线安装整理
参考官方文档: https://rvm.io/rvm/offline 参考博客:https://blog.csdn.net/topswim/article/details/79260369 一.前提 ...