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. Flask中的内置session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from ...

  2. Java多线程系列 基础篇03 线程的优先级和守护线程

    1. 线程优先级 现代操作系统中基本上使用时间分片的方式调度线程,通过设置线程优先级,使优先级高的线程获得时间片的次数多于优先级低的线程. 在java 线程中,通过一个整形变量prority来控制优先 ...

  3. office 2010 激活工具 迷你KMS使用说明

    “迷你KMS”——“”体态轻盈仅只1MB.但却一身承担两大职能:KMS服务器和客户激活端.“迷你KMS”可激活Microsoft Office 2010系列三大版本,以及Windows 7企业.专业版 ...

  4. POJ 之 WERTYU

    WERTYU Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8371   Accepted: 4007 Descriptio ...

  5. 51nod 1225

    题目 题解:看数据范围就估计是根号算法.考虑我们要求的式子: $ \sum\limits_{i = 1}^n {n - \left\lfloor {\frac{n}{i}} \right\rfloor ...

  6. Contiki 2.7 Makefile 文件(五)

    4.第四部分 (1) oname = ${patsubst %.c,%.o,${patsubst %.S,%.o,$(1)}} 自定义函数,$(1)表示调用oname这个函数的第一个参数,patsub ...

  7. Linux-Yum服务器搭建

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  8. Linux学习之路(二)文件处理命令之上

    文件处理命令 1.目录处理命令 2.文件处理命令 3.链接命令 1.目录处理命令 建立目录:mkdirmkdir -p [目录名]-p 递归创建命令英文原意 : make directories 切换 ...

  9. C#SocketAsyncEventArgs实现高效能多并发TCPSocket通信 (服务器实现)

    http://freshflower.iteye.com/blog/2285272 想着当初到处找不到相关资料来实现.net的Socket通信的痛苦与心酸, 于是将自己写的代码公布给大家, 让大家少走 ...

  10. 一个关于前端页面的小标签<tbody>

    我们有时候希望将表格的内容分为多个模块,这时候就可以使用<tbody>标签,它是<table>的字标签,是<tr>的父标签,可以使用它达到一种设置样式的结果.