[暑假集训--数位dp]UESTC250 windy数
windy定义了一种windy数。
不含前导零且相邻两个数字之差至少为22 的正整数被称为windy数。
windy想知道,在AA 和BB 之间,包括AA 和BB ,总共有多少个windy数?
Input
包含两个整数,AA BB 。
满足 1≤A≤B≤20000000001≤A≤B≤2000000000 .
OutputSample Input
1 10
Sample Output
9
记一下上一位出现的数是啥
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define mkp(a,b) make_pair(a,b)
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
LL x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
LL n,len,l,r;
LL f[][][];
int d[];
inline LL dfs(int now,int dat,int lead,int fp)
{
if (now==)return (!lead)||(lead&&dat==);
if (!fp&&f[now][dat][lead]!=-)return f[now][dat][lead];
LL ans=,mx=fp?d[now-]:;
for (int i=;i<=mx;i++)
{
if (!lead&&(i==dat-||i==dat||i==dat+))continue;
ans+=dfs(now-,i,lead&&i==&&now-!=,fp&&i==d[now-]);
}
if (!fp)f[now][dat][lead]=ans;
return ans;
}
inline LL calc(LL x)
{
if (!x)len=,d[len]=;
else
{
LL xxx=x;
len=;
while (xxx)
{
d[++len]=xxx%;
xxx/=;
}
}
LL sum=;
sum+=dfs(len,,,);
for (int i=;i<=d[len];i++)
sum+=dfs(len,i,,i==d[len]);
return sum;
}
int main()
{
while (~scanf("%lld%lld",&l,&r))
{
memset(f,-,sizeof(f));
printf("%lld\n",calc(r)-calc(l-));
}
}
UESTC 250
[暑假集训--数位dp]UESTC250 windy数的更多相关文章
- [暑假集训--数位dp]LightOj1205 Palindromic Numbers
		A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ... 
- [暑假集训--数位dp]hdu3709 Balanced Number
		A balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. ... 
- [暑假集训--数位dp]hdu3555 Bomb
		The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the ti ... 
- [暑假集训--数位dp]hdu3652 B-number
		A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- ... 
- [暑假集训--数位dp]hdu2089 不要62
		杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍, ... 
- 数位dp——BZOJ1026 Windy数
		1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Description windy定义了一种windy数.不含前导零且相邻 ... 
- [暑假集训--数位dp]hdu5787 K-wolf Number
		Alice thinks an integer x is a K-wolf number, if every K adjacent digits in decimal representation o ... 
- [暑假集训--数位dp]LightOJ1140 How Many Zeroes?
		Jimmy writes down the decimal representations of all natural numbers between and including m and n, ... 
- [暑假集训--数位dp]LightOj1032 Fast Bit Calculations
		A bit is a binary digit, taking a logical value of either 1 or 0 (also referred to as "true&quo ... 
随机推荐
- Silverlight日记:动态操作Grid
			一,动态生成Grid public static Grid CreateGrid(List<T_METER> List) { var g = new Grid(); if (null == ... 
- 01_4_Struts路径问题
			01_4_Struts路径问题 1. Struts路径问题说明 struts2中的路径问题是根据action的路径而不是jsp路径来确定,所有尽量不要使用相对路径. 虽然可以使用redirect方式解 ... 
- iOS--获取文件目录的方法
			很多文章都有写这个问题,我只是为了记录一下,免得总翻书... 1.Documents 目录: 你应该将所有的应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该定期备份的信息. 2.L ... 
- NOIP模拟赛 不等数列
			[题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有k个“<”.答案对2012取模. [输入格式] 第一行 ... 
- SwaggerUI日常使用
			最近公司项目集成springFox,记录一些swaggerUI日常使用,包括数组,文件,默认值,允许值,参数/结果类注解,响应码..等等. 一.参数注解: 单参数:@ApiImplicitParam ... 
- Python学习笔记:字符串
			字符串 字符串定义:字符串可以使用一对单引号.双引号或三引号来定义,即便是单个字符也会当做字符串来处理(Python中没有字符类型,单个字符也就是只有一个字符的字符串而已). 原始字符串:字符串中反斜 ... 
- List删除元素
			在单线程环境下的解决办法 public void remove() { if (lastRet == -1) throw new IllegalStateException(); checkForCo ... 
- hdu-2553    N皇后问题(搜索题)
			在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合法的放置方法. Inpu ... 
- 搜索引擎elasticsearch + kibana + X-pack + IK安装部署
			目录 准备安装环境 配置启动 启动elasticsearch 启动kibana 启用X-pack 安装使用IK 使用示例 官方Clients 准备安装环境 这次我们安装以下软件或插件: elastic ... 
- Hadoop4.2HDFS测试报告之六
			测试结论 第一组数据作表格作图: 第二组数据作表格作图: 根据以上图分析得出以下结论: 1. 本地存储的读写速率基本保持23M左右,说明本地存储比较稳定. 2. HDFS存储两个数据节点的读写速率性能 ... 
