bzoj 1026 windy数
题目大意:
定义一种windy数:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数
求在A和B之间,包括A和B,总共有多少个windy数
思路:
一眼数位dp
具体见注释
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdlib> 6 #include<cstring> 7 #include<queue> 8 #include<map> 9 #include<vector> 10 #define ll long long 11 #define inf 2147483611 12 #define MAXN 20 13 using namespace std; 14 inline int read() 15 { 16 int x=0,f=1;char ch=getchar(); 17 while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();} 18 while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();} 19 return x*f; 20 } 21 int a,b,l[11],cnt; 22 ll dp[11][11],res; 23 ll solve(int x)//可以得到结果是小于等于b的所有数减去小于a的所有数 24 { 25 res=cnt=0; 26 while(x) l[++cnt]=x%10,x/=10;//把数字分解为字符串 cnt为x个数 27 for(int i=1;i<l[cnt];i++) res+=dp[cnt][i];//求出小于x但是位数等于cnt的所有答案 28 for(int i=1;i<=cnt-1;i++)//求出位数不到cnt的所有答案 29 for(int j=1;j<10;j++) res+=dp[i][j]; 30 for(int i=cnt-1;i>0;i--)//求出前i-1位和x一样的数且第i-1位小于原数的第i-1位的个数 31 { 32 for(int j=0;j<l[i];j++) 33 if(abs(j-l[i+1])>=2) res+=dp[i][j];//枚举这一位的个数 34 if(abs(l[i+1]-l[i])<2) break;//本身x这两位不满足条件,无法满足条件 退出循环 35 } 36 return res; 37 } 38 int main() 39 { 40 a=read(),b=read(); 41 //下面是预处理出整个dp数组:表示长度为j的数首位为i的所有数的个数 42 for(int i=0;i<10;i++) dp[1][i]=1; 43 for(int i=2;i<=10;i++) 44 for(int j=0;j<10;j++) 45 for(int k=0;k<10;k++) if(abs(j-k)>=2) dp[i][j]+=dp[i-1][k]; 46 printf("%lld",solve(b+1)-solve(a)); 47 }
View Code
转载于:https://www.cnblogs.com/yyc-jack-0920/p/7853344.html
bzoj 1026 windy数相关推荐
- BZOJ 1026 windy数 (数位DP)
题意 区间[A,B]上,总共有多少个不含前导零且相邻两个数字之差至少为2的正整数? 思路 状态设计非常简单,只需要pos.limit和一个前驱数pre就可以了,每次枚举当前位时判断是否与上一位相差2即 ...
- HYSBZ - 1026 windy数(数位dp)
题目链接:点击查看 题目大意:求a到b闭区间内满足相邻两个数字之差大于等于2的数字个数 分析:dp[i][j]表示第i位上数字为j的结果,pos表示位数,pre表示上一位数,lead表示是否有前导0, ...
- bzoj 1026 //1026: [SCOI2009]windy数
bzoj 1026 //1026: [SCOI2009]windy数 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1026 / ...
- BZOJ 1026 [SCOI2009]windy数
1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...
- [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...
- bzoj:1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7982 Solved: 3593 Descriptio ...
- bzoj 1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7688 Solved: 3470 [Submit][S ...
- bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...
- bzoj 1026: [SCOI2009]windy数
Time Limit: 1 Sec Memory Limit: 162 MB Submit: 9998 Solved: 4629 [Submit][Status][Discuss] Descripti ...
最新文章
- 使用Vscode进行远程炼丹
- 基于SSM实现医院疫情管理系统
- 程序设计中的几种设计原则
- python能print中文吗_python怎么print汉字
- 基于matlab的升压斩波实验,升降压斩波电路matlab仿真
- B 附录 Idea debug时的问题 Skipped breakpoint at ...
- 为什么会出现“无法连接服务器-与网络有关或与实例有关的错误”?
- docker 部署 zookeeper+kafka 集群
- python pyhook_python使用pyHook.HookManager()返回来的event中,event.Time怎么转换成为datetime形式?...
- 各种编程技术资料分享
- Linux文件与目录的三种时间状态(mtime,atime,ctime)区别
- 双系统还是虚拟机 linux系统时间,mac装双系统好还是虚拟机好_mac装虚拟机好还是双系统-系统城...
- 石家庄地铁站项目最终总结报告
- Pinterest模式的魅力何在?国内山寨有哪些?
- 你的精力分配,决定你的层次
- 关于/etc/hosts文件
- 常用计算机视觉应用与简介,浅谈计算机视觉的应用与发展
- Sharding Sphere ~ Sharding-jdbc分库分表、读写分离
- 易學으로 본 鬼神問題 鬼神의 有無
- 有类路由和无类路由的深入理解
热门文章
- iOS 通知观察者的被调函数不一定运行在主线程
- Oracle11gR2 64bit+Oracle11gR2Client32bit+pl/sql 9
- 关于AVR单片机熔丝位的设置和拯救方法大全 AVR单片机熔丝位的设置和详细的拯救方法...
- Windows Phone 应用程序生命周期
- Win32 控件篇(3)
- 生成随机数放入整型数组怎么判断有没有重复_图的应用(1)-连通图的最小生成树(Prim算法和Kruskal算法)...
- icem密度盒怎么设置_icem一些总结精编版
- C++中各种弹出对话框
- matlab创建mat格式变量并导入数据
- 记录一下HALCON基于可变形,利用CAD画dxf模板进行模板匹配(二)