「题解」:windy数
问题: windy数
时间限制: 1 Sec 内存限制: 512 MB
题面
题目描述
Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为
的正整数被称为 Windy 数。
Windy 想知道,在A和B之间,包括A和B,总共有多少个 Windy 数?
输入格式
一行两个数,分别为 A,B 。
输出格式
输出一个整数,表示答案。
样例输入
1 10
样例输出
9
题解
我的数位dp入门题,嗯,其实挺easy的。
设f[i][j]表示填了i位数,最高位是j的windy数的个数。
于是不考虑神特么的先导0问题单考虑一下临位差距至少为2的问题直接大力dp算出所有的值。
然后再来一遍大力dp,j从1-9循环累加答案就可以了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define int long long
#define rint register int
#define ll long long
using namespace std;
int f[][]={},a,b;
ll pw[];
void prework()
{
pw[]=;
for(rint i=;i<=;++i)pw[i]=pw[i-]*;
for(rint i=;i<=;++i)f[][i]=;
for(rint i=;i<=;++i)//枚举数位
for(rint j=;j<=;++j)//枚举最高位
for(rint k=;k<=;++k)//枚举上一个状态的最高位,本状态的次高位
if(abs(j-k)>=)f[i][j]+=f[i-][k];
}
int count(int x)
{
int w=,y,ans=,pre;
while(pw[w]<=x)++w;//求位数
for(rint i=;i<w;++i)//枚举位数
for(rint j=;j<=;++j)//枚举最高位
ans+=f[i][j];
y=x/pw[w-];
for(rint i=;i<y;++i)ans+=f[w][i];
pre=y;
x%=pw[w-];
for(rint i=w-;i>=;--i)
{
y=x/pw[i-];
for(rint j=;j<y;++j)
if(abs(j-pre)>=)
ans+=f[i][j];
if(abs(pre-y)<)break;
pre=y;
x%=pw[i-];
}
return ans;
}
signed main()
{
scanf("%lld %lld",&a,&b);
prework();
cout<<count(b+)-count(a)<<endl;
return ;
}
「题解」:windy数的更多相关文章
- 「SCOI2009」windy数
传送门 Luogu 解题思路 数位 \(\text{DP}\) 设状态 \(dp[now][las][0/1][0/1]\) 表示当前 \(\text{DP}\) 到第 \(i\) 位,前一个数是 \ ...
- 「CQOI2015」选数
「CQOI2015」选数 题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都 ...
- 「FJOI2016」神秘数 解题报告
「FJOI2016」神秘数 这题不sb,我挺sb的... 我连不带区间的都不会哇 考虑给你一个整数集,如何求这个神秘数 这有点像一个01背包,复杂度和值域有关.但是你发现01背包可以求出更多的东西,就 ...
- LibreOJ2095 - 「CQOI2015」选数
Portal Description 给出\(n,k,L,R(\leq10^9)\),求从\([L,R]\)中选出\(n\)个可相同有顺序的数使得其gcd为\(k\)的方案数. Solution 记\ ...
- 【LOJ】#3094. 「BJOI2019」删数
LOJ#3094. 「BJOI2019」删数 之前做atcoder做到过这个结论结果我忘了... em,就是\([1,n]\)之间每个数\(i\),然后\([i - cnt[i] + 1,i]\)可以 ...
- 「BZOJ3505」[CQOI2014] 数三角形
「BZOJ3505」[CQOI2014] 数三角形 这道题直接求不好做,考虑容斥,首先选出3个点不考虑是否合法的方案数为$C_{(n+1)*(m+1)}^{3}$,然后减去三点一线的个数就好了.显然不 ...
- 「题解」「美团 CodeM 资格赛」跳格子
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...
- 「题解」「HNOI2013」切糕
文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...
- 「题解」JOIOI 王国
「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...
随机推荐
- VMware Workstation 添加磁盘 挂载目录(centos)
参考文档: Linux命令大全 需求:测试环境虚拟机某个目录下空间不足,准备通过添加一块磁盘,并将该目录挂载到该磁盘 前面几步在测试服务器上操作的,截图困难,所以网上找了几张设置图 关闭虚拟机(没测试 ...
- Android Telephony分析(三) ---- RILJ详解
前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程.这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\andro ...
- 实时收集Storm日志到ELK集群
背景 我们的storm实时流计算项目已经上线几个月了,由于各种原因迟迟没有进行监控,每次出现问题都要登录好几台机器,然后使用sed,shell,awk,vi等各种命令来查询原因,效率非常低下,而且有些 ...
- 02->交互式图形学--用glut库实现Sierpinski镂垫
Sierpinski图形是一类有趣的图形,本文结合交互式图形学教材,讲解Sierpinski镂垫图形生成,作为入门图形学编程的第一课.为了简便,本文就2D来进行讨论.实验环境见01 算法 主要是根据随 ...
- EntityFrameworkCore 根据实体类自动创建数据库
1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1 Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) ...
- windows2012 日志查看过程
Windows2012界面修改好造成有些人不知道在哪里查找windows 日志 我这边截图描述一下 1. 2.输入 命令 eventvwr.msc 3.弹出 windows 事件查看器 4.若需要 ...
- sublime text-----查看当前文件的编码格式
1.preferences->settings,在user中添加 "show_encoding": true, "show_line_endings": ...
- Java Collection - HashMap
HashMap源码解析 java.util.HashMap 类 https://www.cnblogs.com/ysocean/p/8711071.html HashMap线程不安全的原因 https ...
- Java 基础 - java序列化 & serialVersionUID
ref: https://www.cnblogs.com/duanxz/p/3511695.html ------------------- SerialVersionUID概述 SerialVers ...
- SpringBatch批处理框架
1.前言:本博客是对于刘相SpringBatch批处理框架的学习 1.1.参考网站:https://docs.spring.io/spring-batch/4.2.x/reference/html/i ...