【bzoj】1026: [SCOI2009]windy数
Description
windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?
100%的数据,满足 1 <= A <= B <= 2000000000
思路:和 不要62以及Bomb差不多一样,有一点需要注意就是在最高位为0时,这是次一位并不会出现1,这是一个“空白”,所以很遗憾的要首先把位数小于n的数分开计算。。这就导致了初始化表示的1位时每一个数字节是否符合,而并不是表示区间。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<time.h>
using namespace std;
int f[][];
void init()
{
for(int j = ;j <= ;j++) f[][j] = ;// 表示的有点反常~~
for(int i = ;i <= ;i++)
for(int j = ;j <= ;j++){
for(int k = ;k <= ;k++)
if(abs(j - k) > )
f[i][j] += f[i-][k];
}
}
int query(int a)
{
int d[] = {},tot = ;
while(a){
d[++tot] = a % ;
a /= ;
}
d[tot + ] = -;
int ans = ;
for(int i = ;i < tot;i++)
for(int j = ;j <= ;j++)
ans += f[i][j];
for(int i = tot;i > ;i--){
for(int j = ;j < d[i];j++){
if(i == tot && j == ) continue;//第tot位不为0;
if(abs(j - d[i+]) > )
ans += f[i][j];
}
if(abs(d[i] - d[i+]) < ) break;
}
return ans;
}
int main()
{
init();
int A,B;
while(scanf("%d%d",&A,&B) == ){
printf("%d\n",query(B+) - query(A));
}
return ;
}
【bzoj】1026: [SCOI2009]windy数的更多相关文章
- 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数(数位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]的答案 : 从最高位到最低位 ...
- 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 ...
- bzoj 1026: [SCOI2009]windy数 & 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...
- BZOJ 1026: [SCOI2009]windy数
题目 人生中的第一道数位dp,很有趣,虽然我很快推出了结构,但是过程却迟迟没有写出来,最后看别人的题解才恍然大悟 d[i][j]表示数位为i,最高位为j的方案数 DpInit非常简单,复杂度应该是O( ...
- bzoj 1026: [SCOI2009]windy数【数位dp】
忘记limit不能记WA了一发-- 典型数位dp,变成work(r)-work(l-1),然后dfs的时候记录w当前位置,la上一个数选的什么,lm当前位是否有上限,ok当前位是否可以不考虑差大于等于 ...
- bzoj 1026 [SCOI2009]windy数——数位dp水题
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 迷恋上用dfs写数位dp了. #include<iostream> #in ...
- 数位DP BZOJ 1026 [SCOI2009]windy数
题目链接 前面全是0的情况特判 #include <bits/stdc++.h> int dp[10][10]; int digit[10]; int DFS(int pos, int v ...
随机推荐
- partition例子
10.13 标准库定义了名为partition的算法,它接受一个谓词,对容器内容进行划分,使得谓词为true的值会排在容器的前半部分,而使谓词为false的值会排在后半部分.算法返回一个迭代器,指向最 ...
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
- Spring + JDK Timer Scheduler Example--reference
http://www.mkyong.com/spring/spring-jdk-timer-scheduler-example/ In this example, you will use Sprin ...
- 嵌入式Linux-linux连接脚本
嵌入式Linux-linux连接脚本 介绍 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出 ...
- 如何使用axis2 构建 Android 服务器后端--- 工具准备与环境配置
最近一个项目要做个android端的实验室器材管理系统.小伙伴英勇地接下android端的锅,我就 负责给他写后端,最近看到axis2 这个webservice挺好用的,折腾了几天给大家分享下: 1. ...
- Mysql+keeplived+lvs
最近要做个高可用的mysql.用mysql主主复制方式保证两台数据库的数据一致.结合lvs和keepalived一起使用(keepalived+lvs的设置会再另外一篇文章里写). 搭好环境之后,本人 ...
- 使用modelsim仿真DDR3时编译出错的解决方法
Modelsim 10.1c release note sates as : Product Changes in 10.1c Release 10.1b introduced a new error ...
- SharePoint 文档库实现文件夹拖放到文档库
打开文档库-> 选择文件夹-> 在Ribbon中选择“库(list)”-> 在右边可以看到打开方式-> 选择用资源管理器打开-> 在新打开的资源管理器中可能实现对文夹的拖 ...
- ECMA5 Array 新增API reduce
1)reduce:相当与迭代: [].reduce(function(previous,current,index,array){ return previous * current;//相当与做阶乘 ...
- WebWork2和Spring MVC Framework的比较
http://daihaixiang.blog.163.com/blog/static/3830134200711411515336/ WebWork2和Spring MVC Framework的比较 ...