P2188 小Z的 k 紧凑数

题目描述

小 Z 在草稿纸上列出了很多数,他觉得相邻两位数字差的绝对值不超过 k 的整数特别奇特,称其为 k 紧凑数。

现在小 Z 想知道 [l,r] 内有多少个 k 紧凑数,希望你帮帮他。

输入输出格式

输入格式:

第一行包含三个整数 l,r,k。

输出格式:

第一行包含一个整数,表示 [l,r] 内 k 紧凑数的个数。

输入输出样例

输入样例#1:

1 13 1
输出样例#1:

12

说明

【数据规模】

对于 30% 的数据,r − l ≤ 10^5;

对于另外 30% 的数据,l = 1,r 为 10 的倍数;

对于 100% 的数据,1 ≤ l ≤ r ≤ 10^18,0 ≤ k ≤ 8。

#include<iostream>
#include<cstdio>
using namespace std;
long long l,r;
int k,len,bin[],b[];
long long dfs(int pos,int pre,int limit,int lead){
if(pos==len+)return ;
int end=limit?bin[pos]:;
long long ans=;
if(pos==){
for(int i=;i<=end;i++)
ans+=dfs(pos+,i,limit&&i==end,lead&&i==);
}
else if(lead){
for(int i=;i<=end;i++)
ans+=dfs(pos+,i,limit&&i==end,lead&&i==);
}
else{
for(int i=max(,pre-k);i<=min(pre+k,end);i++)
ans+=dfs(pos+,i,limit&&i==end,lead&&i==);
}
return ans;
}
long long work(long long x){
len=;
while(x){
b[++len]=x%;
x/=;
}
for(int i=,j=len;i<=len;i++,j--)bin[i]=b[j];
return dfs(,,,);
}
int main(){
freopen("Cola.txt","r",stdin);
scanf("%d%d%d",&l,&r,&k);
cout<<work(r)-work(l-);
}

30分 暴力枚举数的每一位

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cstdlib>
#define int long long
using namespace std;
int f[][],x,y,m,bin[];
int dp(int x){
if(x==)return ;
bin[]=;while(x)bin[++bin[]]=x%,x/=;
if(bin[]==)return bin[]+;
int ans=;
for(int i=;i<bin[];i++)
for(int j=;j<;j++)ans+=f[i][j];
for(int i=;i<bin[bin[]];i++)ans+=f[bin[]][i];
for(int i=bin[]-;i;i--){
if(i<bin[]-&&abs(bin[i+]-bin[i+])>m)return ans;
for(int j=;j<bin[i];j++)if(abs(j-bin[i+])<=m)ans+=f[i][j];
}
if(abs(bin[]-bin[])<=m)ans++;return ans;
}
signed main(){
freopen("Cola.txt","r",stdin);
cin>>x>>y>>m;
for(int i=;i<;i++)f[][i]=;
for(int i=;i<=;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)if(abs(j-k)<=m)f[i][j]+=f[i-][k];
cout<<dp(y)-dp(x-);
return ;
}

100分 数位dp

洛谷P2188 小Z的 k 紧凑数的更多相关文章

  1. P2188 小Z的 k 紧凑数 题解(数位DP)

    题目链接 小Z的 k 紧凑数 解题思路 数位DP,把每一个数位的每一个数对应的可能性表示出来,然后求\(num(1,r)-num(1,l-1)\),其中\(num(i,j)\)表示\([i,j]\)区 ...

  2. Bzoj2038/洛谷P1494 小Z的袜子(莫队)

    题面 Bzoj 洛谷 题解 考虑莫队算法,首先对询问进行分块(分块大小为\(sqrt(n)\)),对于同一个块内的询问,按照左端点为第一关键字,右端点为第二关键字排序.我们统计这个区间内相同的颜色有多 ...

  3. 洛谷 2186 小Z的栈函数

    https://www.luogu.org/problem/show?pid=2186 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: N ...

  4. 洛谷——P2117 小Z的矩阵

    P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...

  5. 洛谷—— P2117 小Z的矩阵

    https://www.luogu.org/problemnew/show/2117 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1 ...

  6. 洛谷 P2117 小Z的矩阵

    P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...

  7. 洛谷 2187 小Z的笔记

    [题解] DP.  设f[i]表示前i个字母,保留第i个字母,最多可以保留多少个字母:设g[i]为当前字母为i的位置对应的f的最大值. 转移方程就是f[i]=max(f[i], g[j]+1) (j与 ...

  8. [洛谷P2186] 小Z的栈函数

    题目链接: 传送门 题目分析: 大模拟,先得存操作,然后再处理每个数-- 有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了-- 总之就是个模拟题--没 ...

  9. [洛谷P2107] 小Z的AK计划

    题目类型:贪心,堆 传送门:>Here< 题意:给出\(N\)个房间,每个房间距离起点的距离为\(x[i]\),每个房间可以选择进去和不进去,如果进去了那么要\(t[i]\)秒后才能出来. ...

随机推荐

  1. 【ELK】ELK5.3搭建过程遇到的问题

    elasticsearch 5.3 安装过程中遇到了一些问题,这里简单记录一下 . 问题一:警告提示 [2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ...

  2. Java for LeetCode 124 Binary Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  3. 【LeetCode】两个有序数组合成一个有序数组

    a = [1,3,5,7,9]b = [2,4,6,8,10]c= [] while len(a) > 0: if len(b) == 0: c.extend(a) break min_num ...

  4. Hadoop- Wordcount程序原理及代码实现

    如果对Hadoop- MapReduce分布式计算框架原理还不熟悉的可以先了解一下它,因为本文的wordcount程序实现就是MapReduce分而治之最经典的一个范例. 单词计数(wordcount ...

  5. CSS3悬停特效合集Hover.css

    CSS3悬停特效合集Hover.css是一款特效丰富,支持2D变化特效.边框特效.阴影特效等: 使用简单,可直接复制相关特效代码,快速应用到元素上. 源码地址:http://www.huiyi8.co ...

  6. CI公用模型

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * SEO管理系统 -- 公用模型 ...

  7. frp支持httpIP地址加端口号访问

    (一)安装就不再多说 传送门:https://blog.csdn.net/superljn/article/details/81289993 (二)vim frps.ini [common] bind ...

  8. 第十四章-MySQL

    1 安装 MySQL常见的版本 GA: 广泛使用的版本 RC: 最接近正式版本 Alpha和Bean: 内测版本和公测版本 有两种安装方式: 安装包和压缩包 1) 安装msi文件 2) 解压zip文件 ...

  9. OpenCV——花环生成函数

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  10. 0.5px的实现的几种方法

    方法一 通过css3缩放 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...