「题解」: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 ...
随机推荐
- JVM内核-原理、诊断与优化学习笔记(八):JAVA堆分析
文章目录 内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 永久区 Java栈溢出 直接内存溢出 小问题? MAT使用基础 柱状图显示 支配树 显示线程信息 显示堆总体信息,比如消耗最大 ...
- C语言中static用法介绍
C语言中static用法介绍 对于新手来说,很多东西的用法还不是很清楚,我们今天一起来看看C语言中static用法介绍 1.声明了static的变量称为静态变量,根据作用域的不同又分为 ...
- IPv6 三个访问本地地址的小Tips
最近发现家里宽带支持IPv6了,这里分享三个利用IPv6访问本地地址(内网地址)的方法. 通常来说,我们用localhost来代表本地地址127.0.0.1.其实在IPv6中有他自己的表示方法ip6- ...
- 什么是PoE、PSE、PD设备?
一个完整的PoE系统包括供电端设备(PSE, Power Sourcing Equipment)和受电端设备(PD, Power Device)两部分.PSE设备是为以太网客户端设备供电的设备,同时也 ...
- 20140425 malloc和new不同 dynamic何时返回0
1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...
- Day9, 进程、线程、协程篇
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- 查看Linux服务器公网IP
参考:https://www.cnblogs.com/pyyu/p/8545896.html 方法1:curl ifconfig.me 方法2:curl cip.cc
- Git的配置及克隆项目到本地
- sslforfree的证书合并成类似于certbot的ssl证书文件
之前的證書都是通過 certbot的命令生成的,但是目前一個服務器太多個網站,太多個ssl證書,證書過期之後,目前是 通過 ssl for free 網站再生成新的 ssl證書,再次更新證書週期 Le ...
- CSIC_716_20191119【常用模块的用法 subprocess、re、logging、防止自动测试、包的理论】
subprocess模块 可以通过python代码给操作系统终端发送命令,并可以得到返回结果. import subprocess str = input('>>>请输入命令') # ...