1026: [SCOI2009]windy数 - BZOJ
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的更多相关文章
- bzoj 1026 [SCOI2009]windy数 数位dp
1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- 【bzoj】1026: [SCOI2009]windy数
1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...
- bzoj 1026 [SCOI2009]windy数(数位DP)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4550 Solved: 2039[Submit][Sta ...
- BZOJ 1026: [SCOI2009]windy数( dp )
dp..dp(x, t) 表示共x位, 第x位为t有多少个windy数. 对答案差分, 我们只需统计1 ~ l-1和1 ~ r的windy数数量. 考虑如何计算[1, n]的答案 : 从最高位到最低位 ...
- 1026: [SCOI2009]windy数
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8247 Solved: 3708[Submit][Sta ...
- 1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9016 Solved: 4085[Submit][Sta ...
- 【BZOJ】1026: [SCOI2009]windy数(数位dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1026 我果然很弱啊... 考虑数位dp.枚举每一位,然后限制下一位即可. 一定要注意啊!在dfs的时 ...
- bzoj 1026 [ SCOI2009 ] windy数 —— 数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 蛮简单的数位DP,预处理 f[i][j] 表示 i 位数,以 j 开头的 windy ...
- BZOJ 1026: [SCOI2009]windy数 【数位dp】
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...
随机推荐
- tools安装
1.ruby安装 下载安装包 勾选中间一个 2.sass 安装 转换TB镜像 $ gem sources --remove https://rubygems.org/$ gem sources - ...
- C#的提交表单方式WebClient
向网站提交页面的主要代码 string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form ...
- 【Unix环境高级编程】编写变长参数函数
文件的格式输入输出函数都支持变长参数.定义时,变长参数列表通过省略号'...'表示, 因此函数定义格式为: type 函数名(parm1, parm2,parmN,...); Unix的变长参数通过v ...
- 记redis的一个测试
现有020的系统架构走库存,取券通过Fetch前n条来实现买n张优惠券,但此做法在高并发时有严重的性能问题,性能问题主要体现在数据库. 为了优化此性能,系统改为redis,走队列模式,即生产者消费者. ...
- C# DateTimePicker控件详解
1.同时显示日期和时间 DateTimePicker dtp = new DateTimePicker(); dtp.Format = DateTimePickerFormat.Custom;dtp. ...
- OC6-网址分割
// // HtmlManger.h // OC6-网址分割 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng ...
- JSON-lib框架,JAVA对象与JSON、XML之间的相互转换
Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作 ...
- 动态链接库加载出错:cannot restore segment prot after reloc: Permission denied
在执行可执行程序时,出现动态链接库加载出错:cannot restore segment prot after reloc: Permission denied. 主要是由于Linux 内核中提供的强 ...
- Linq to sql 接收存储过程返回的多个结果集
故事前提.......... 一.返回顺序结果集 存储过程实例 CREATE PROCEDURE MultipleResultTypesSequentially AS select * from pr ...
- L008-oldboy-mysql-dba-lesson08
L008-oldboy-mysql-dba-lesson08 xtrabackup安装 [root@web01 installer]# wget https://www.percona.com/dow ...