uestc 1307 windy数

2024-05-14 12:08
文章标签 uestc 1307 windy

本文主要是介绍uestc 1307 windy数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

windy定义了一种windy数。
不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。
windy想知道,在A和B之间,包括A和B,总共有多少个windy数?

Input

包含两个整数,A B。
满足 1 <= A <= B <= 2000000000 。

Output

包含一个整数:闭区间[A,B]上windy数的个数。

Sample Input

1 10

Sample Output

9

不错的数位dp!

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
#define M 23
int dp[M][12],pri[M];
int get(int t,int i,int pre){if(t==11){if(i==0)return 11;else return i;}if(fabs(i-pre)>=2)return i;return -1;
}
int dfs(int pos,int pre,int t,int flag){if(t==-1)return 0;if(pos==0)return 1;if(!flag&&t>=0&&dp[pos][t]!=-1)return dp[pos][t];int u=flag?pri[pos]:9,ans=0;for(int i=0;i<=u;i++)ans+=dfs(pos-1,i,get(t,i,pre),flag&&i==u);return flag?ans:dp[pos][t]=ans;
}
int solve(int x){int cnt=0;while(x){pri[++cnt]=x%10;x=x/10;}return dfs(cnt,11,11,1);
}
int main()
{int tcase;int n,m;memset(dp,-1,sizeof(dp));while( scanf("%d%d",&m,&n)!=EOF){printf("%d\n",solve(n)-solve(m-1));}return 0;
}

 

这篇关于uestc 1307 windy数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988707

相关文章

【BZOJ】1026: [SCOI2009]windy数 数位DP

传送门:【BZOJ】1026: [SCOI2009]windy数 题目分析:数位DP水题。 代码如下: #include <stdio.h>#include <cstring>#include <algorithm>#define rep( i , a , b ) for ( int i = a ; i < b ; ++ i )#define For( i ,

【UESTC】【windy数】

windy数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  Status windy定义了一种windy数。 不含前导零且相邻两个数字之差至少为 2 的正整数被称为windy数。 windy想知道,在 A 和 B 之间,包括 A 和

UESTC 1712 Easy Problem With Numbers 除法对和数取模,分解,线段树

附上神牛原版思路: 如果这个题只有乘法,那么你肯定会做吧?线段树更新区间查找区间。 那么有除法呢?当一个数x和m互质的时候,除以x可以改为乘以x的逆元。(至于互质的数求逆元用扩展欧几里德,这个网上可以随便找到) 但是这题并不能保证除的数与m互质吧?什么时候x与m不互质呢?就是x与m含有公因子吧? 那么我们一开始就把m分解,分解出来m有p1,p2,p3,p4...pn等一

bzoj1026--SCOL2009--windy数(数位dp练习1)

windy数 Time Limit:1000MS     Memory Limit:165888KB     64bit IO Format:%lld & %llu Submit  Status Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多

lightoj 1307 Counting Triangles | 二分/暴力

题意: 给你N条边,问你能组成三角形的方法数。 思路: 判断三条边能否组成三角形,根据任意两条边的和大于第三边。 实际上,在确定A<=B<=C的情况下,只要A+B的和大于C即可认为ABC能组成三角形。 这题可以不用二分,用二分速度反而变慢了。排好序后乱搞就可以了。 AC代码: #include <cstring>#include <cstdlib>#include <cstd

UESTC 360(1425) another LCIS

这道题是CD老OJ上面的一道题,现在在新OJ上的题号是360,开始在VJ上做的提交一直RE(囧)。后来才知道OJ移位了。 这道题是一个简单的成段更新+区间合并的线段树的题,1A还让我小激动了一下 这道题的大概意思是有两种操作,一种是成段地增加一个值,另外一种是询问从l到r这段区间内的最长递增子序列 首先先分析一下,如果某一段的值成段地增加一个量,那么该区间内的数的相对大小是不变的,因此递增子

uestc 1307 windy数 --- 数位DP

到底是什么oj啊 根本交不了啊 谁帮我交下这题? #include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#defi

1026: [SCOI2009]windy数(数位dp)

1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 12141 Solved: 5770 [Submit][Status][Discuss] Description   windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道, 在A和B之间,包括A和

Codeforces 1307 E Cow and Treats —— 想法

This way 题意: 现在有一行,每格都有草,每个草的甜度为ai,现在有m头牛,每头牛喜欢的甜度和要吃的格数都告诉你,现在你要安排这些牛去吃草,每头牛只能从左到右或从右到左吃,它吃饱了之后就会停下来,并且之后的牛不能再通过这个格子,并且吃过的草不会再长出来。问你最多有多少牛可以吃饱并且在此前提下有多少种方法。 题解: 这种问你情况的题目并不要求让你输出具体怎么做,有时候我就会从怎么将它

UESTC 618 无平方因子数 (容斥 + 莫比乌斯反演)

无平方因子数 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 65535/65535KB (Java/Others) Submit  Status 无平方因子数即对于任意一个素数p,p2都不会整除那个数,如1 , 5=5 , 15=3×5都是无平方因子数,而20=22×5不是。现在给定一个n (1≤n<1012)