[SCOI2009]windy数
时间:2019-09-25
本文章向大家介绍[SCOI2009]windy数,主要包括[SCOI2009]windy数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
洛咕
题意:给定数对\(l,r\),求\([l,r]\)内不含前导零且相邻两个数字之差至少为2的正整数的个数.\(1<=l<=r<= 2000000000.\)
直接套模板就好了.因为题目保证了\(l>=1\)所以可以不特判.
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<set>
#define ll long long
using namespace std;
inline int read(){
int x=0,o=1;char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')o=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*o;
}
int len,a[15],dp[15][10];
inline int dfs(int pos,int pre,int lead,int limit){
if(pos>len)return 1;//找到了一个合法的数
if(dp[pos][pre]!=-1&&(!lead)&&(!limit))return dp[pos][pre];//记忆化搜索
int cnt=0,res=limit?a[len-pos+1]:9;
for(int i=0;i<=res;++i){//枚举当前pos位能填的数
if((!i)&&lead)cnt+=dfs(pos+1,0,1,limit&&(i==res));//处理前导零
else if(i&&lead)cnt+=dfs(pos+1,i,0,limit&&(i==res));
else if(abs(i-pre)>=2)cnt+=dfs(pos+1,i,0,limit&&(i==res));//相邻两位数的差的绝对值要大于等于2
}
return (!limit&&!lead)?dp[pos][pre]=cnt:cnt;
}
inline int part(int x){
len=0;
while(x)a[++len]=x%10,x/=10;
memset(dp,-1,sizeof(dp));
dfs(1,0,1,1);
}
int main(){
int l=read(),r=read();
printf("%d\n",part(r)-part(l-1));
return 0;
}
原文地址:https://www.cnblogs.com/PPXppx/p/11584270.html
- TSQL--临时表和表变量
- 微软开源 C++ REST SDK
- 使用Autofac在ASP.NET Web API上实现依赖注入
- Universal-Image-Loader完全解析--从源代码分析Universal-Image-Loader中的线程池
- 我是怎样爬下6万共享单车数据并进行分析的(附代码)
- 数据库压缩备份提高备份效率
- 教你用TensorFlow和自编码器模型生成手写数字(附代码)
- 开源OCR引擎Tesseract
- 数据仓库中如何使用索引
- PowerBI 引入时间智能
- 列存储索引1:初识列存储索引
- 通过案例来学习TCP的MSS、MTU
- webview和js交互
- 比较列存储索引与行索引
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 为你的图片添加图例
- matplotlib中的黑魔法:constrained和tight layout
- 用不同的坐标系统对图形元素进行定位
- 对《丢鸡蛋问题》的一点补充
- HA(高可用)就像套娃,像胖子,剥掉一层还有一层
- 《丢鸡蛋问题》重制版来袭~
- 如何搭建一个完美的组件库?
- 架构师的初级技能,选组件!(2020更新版,非广告)
- 半天掌握TypeScript,感觉就像写Java
- PyTorch中神经网络的对抗性攻击和防御
- 了解 Swift 的 Result 类型
- Java自动化测试(特殊元素处理 26)
- Java自动化测试(web自动化测试框架 28)
- 你想要拥有自己的搜索引擎吗?
- JAVA三年面试总结,金九银十,你准备好了吗?