Description

windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?
Input

包含两个整数,A B。
Output

一个整数。
Sample Input
【输入样例一】
1 10

【输入样例二】
25 50

Sample Output
【输出样例一】
9

【输出样例二】
20

【数据规模和约定】
20%的数据,满足 1 <= A <= B <= 1000000 。
100%的数据,满足 1 <= A <= B <= 2000000000 。

dp,f[i,j]表示有i位,最高位是j的windy数有多少(当然,这里有前导0)

我们只要会算1到x有多少windy数,就可以通过减法得到a到b的windy数有多少个

我们先不考虑每一位的限制,最后减掉不合法的就行了

考虑怎么才不合法,就是windy数比x大

即高位全部一样,第i位大与x的第i位,就减去它的方案数,但是要注意,高位一样可能就不是windy数了,所以从高往低做,不可能是windy数的时候就退出

实在不懂可以看代码

 var
f:array[..,..]of int64;
i,j,k:longint;
a,b:int64; function fx(x:int64):int64;
var
i,j,k:longint;
s:array[..]of longint;
begin
i:=;
while x> do
begin
inc(i);
s[i]:=x mod ;
x:=x div ;
end;
fx:=;
for j:= to i do
for k:= to do
inc(fx,f[j,k]);
s[i+]:=;
for j:=s[i]+ to do
dec(fx,f[i,j]);
while (i>) and (abs(s[i]-s[i+])>) do
begin
for j:=s[i-]+ to do
if abs(s[i]-j)> then dec(fx,f[i-,j]);
dec(i);
end;
end; begin
read(a,b);
for i:= to do
f[,i]:=;
for i:= to do
for j:= to do
for k:= to do
if abs(j-k)> then inc(f[i,j],f[i-,k]);
write(fx(b)-fx(a-));
end.

1026: [SCOI2009]windy数 - BZOJ的更多相关文章

  1. bzoj 1026 [SCOI2009]windy数 数位dp

    1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  2. 【bzoj】1026: [SCOI2009]windy数

    1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...

  3. bzoj 1026 [SCOI2009]windy数(数位DP)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4550  Solved: 2039[Submit][Sta ...

  4. BZOJ 1026: [SCOI2009]windy数( dp )

    dp..dp(x, t) 表示共x位, 第x位为t有多少个windy数. 对答案差分, 我们只需统计1 ~ l-1和1 ~ r的windy数数量. 考虑如何计算[1, n]的答案 : 从最高位到最低位 ...

  5. 1026: [SCOI2009]windy数

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8247  Solved: 3708[Submit][Sta ...

  6. 1026: [SCOI2009]windy数(数位dp)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9016  Solved: 4085[Submit][Sta ...

  7. 【BZOJ】1026: [SCOI2009]windy数(数位dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1026 我果然很弱啊... 考虑数位dp.枚举每一位,然后限制下一位即可. 一定要注意啊!在dfs的时 ...

  8. bzoj 1026 [ SCOI2009 ] windy数 —— 数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 蛮简单的数位DP,预处理 f[i][j] 表示 i 位数,以 j 开头的 windy ...

  9. BZOJ 1026: [SCOI2009]windy数 【数位dp】

    Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...

随机推荐

  1. Linux 命令 - ss: 查看套接字统计信息

    命令格式 ss [options] [ FILTER ] 命令参数 -h, --help 显示帮助信息. -V, --version 显示版本信息. -n, --numeric 不解析服务名称. -r ...

  2. Sqlserver 关于游标

    对于sql来说查询的思维方式的面向集合对于游标来说:思维方式是面向行的 性能上:游标会吃更多内存,减少可见的并发,锁定资源等 当穷尽了while循环,临时表,表变量,自建函数,或其他方式仍然无法实现某 ...

  3. Java之绘制艺术图案

    前面已经介绍过绘制方法.这里不再赘述. package com.caiduping; import java.awt.Color; import java.awt.Graphics; import j ...

  4. R语言diagram包画订单状态流图

    代码如下: library("diagram") #a <- read.table(file="clipboard",header=TRUE) write ...

  5. Linux学习三部曲(之二)

    新建Linux分区以及文件系统 今天,我们来聊聊在linux上建立分区和文件系统.windows系统建立分区可以借助分区工具,那么在linux分区以及文件系统又该如何操作呢? 打开secureCRT, ...

  6. 常用到的Tomcat的修改方法

    1.修改端口号 打开tomcat的service.xml文件: 找到<Connector connectionTimeout="20000" port="8080& ...

  7. jquery的map()和each()方法

    1. map()方法 //找到所有的标题元素,映射它们的ID,并转化为数组后排序 $(':header').map(function(){return this.id}).toArray().sort ...

  8. HTML5+J2EE实现文件异步上传

    P.S. HTML5经过了W3C的8年努力,终于正式推广了.这次升级最大的就是升级了XMLHTTPRequest,让它变成了XMLHTTPRequest Level II(这有啥奇怪的?).这个对象现 ...

  9. Linux RedHat无法安装软件问题(No package gcc available. Nothing to do)

    在一个新的Linux服务器上安装nginx的时候,命令都不能解析,缺少gcc编辑器,安装gcc的命令也出错. [root@localhost ~]# yum -y install gcc Loaded ...

  10. Android 自定义CheckBox 样式

    新建Android XML文件,类型选Drawable,根结点选selector,在这定义具体的样式. <?xml version="1.0" encoding=" ...