题目描述

辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!

好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数;110是萌的,因为包含回文子串11;但是102不是萌的,1201也不是萌的。

现在SOL想知道从l到r的所有整数中有多少个萌数。

由于答案可能很大,所以只需要输出答案对1000000007(10^9+7)的余数。

输入输出格式

输入格式:

输入包含仅1行,包含两个整数:l、r。

输出格式:

输出仅1行,包含一个整数,即为答案。

输入输出样例

输入样例#1: 复制

1 100

输出样例#1: 复制

10

输入样例#2: 复制

100 1000

输出样例#2: 复制

253

说明

记n为r在10进制下的位数。

对于10%的数据,n <= 3。

对于30%的数据,n <= 6。

对于60%的数据,n <= 9。

对于全部的数据,n <= 1000,l < r。

用记忆化搜索实现数位dp

如果没有限位就可以记忆化

有限位就要往下递归

还要考虑前导0

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long lol;
 8 lol f[1001][12][12][2],Mod=1e9+7;
 9 char s1[1001],s2[1001],s[1001];
10 lol dfs(int pos,int pre,int bef,int t,int k,int flag)
11 {int i;
12   if (pos<0) return t;
13   if (!flag&&f[pos][pre+1][bef+1][t]!=-1) return f[pos][pre+1][bef+1][t];
14   int end;
15   lol cnt=0;
16   if (flag) end=s[pos]-'0';
17   else end=9;
18   for (i=0;i<=end;i++)
19     {
20       cnt+=dfs(pos-1,i,k?pre:-1,t||((i==pre)&&k)||((i==bef)&&k),k||(i!=0),flag&&(i==end));
21       cnt%=Mod;
22     }
23   if (!flag&&k&&bef!=-1) f[pos][pre+1][bef+1][t]=cnt;
24   return cnt;
25 }
26 lol solve(char ch[])
27 {int i;
28   memset(f,-1,sizeof(f));
29   int len=strlen(ch);
30   for (i=0;i<len;i++)
31     s[len-i-1]=ch[i];
32   while (s[len-1]=='0') len--;
33   return dfs(len-1,-1,-1,0,0,1);
34 }
35 int main()
36 {int i;
37   cin>>s1>>s2;
38   int len=strlen(s1);
39   s1[len-1]--;
40   for (i=len-1;i>=0;i--)
41     if (s1[i]<'0') s1[i]+=10,s1[i-1]--;
42   printf("%lld\n",(solve(s2)-solve(s1)+Mod)%Mod);
43 }

转载于:https://www.cnblogs.com/Y-E-T-I/p/8466813.html

luogu 3413 SAC#1 - 萌数相关推荐

  1. 洛谷P3413 SAC#1 - 萌数(数位dp)

    题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的,因为101本 ...

  2. SAC#1 - 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  3. 洛谷 P3413 SAC#1 - 萌数(数位dp)

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  4. 洛谷P3413 SAC#1 - 萌数【数位DP】

    时空限制 1000ms / 128MB 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的 ...

  5. [LUOGU3413] SAC#1 - 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  6. 洛谷 3413 萌数

    Description 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的 ...

  7. [Luogu] P3413 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:已和谐 . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只 ...

  8. luogu3413 萌数

    https://www.luogu.org/problem/P3413 数位dp题 直接算萌数不容易,但直接算非萌数比较容易 一个非萌数只要满足对于任意一位$i$,$num[i]!=num[i+1] ...

  9. 【luogu P3931 SAC E#1 - 一道难题 Tree】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3931 肉眼观察题目感觉可以跑最大流. 证明是如果拆断一棵树,可以最小割,最小割等于最大流. 注意: 图是无向 ...

最新文章

  1. 一致性哈希(Consistent Hashing)
  2. 在动作观察,运动想象和站立和坐姿执行过程中解码脑电节律
  3. 网络编程—网络基础概览、socket,TCP/UDP协议
  4. 前后端交互中,返回前端的自定义响应数据结构
  5. [Golang]slice值传递存在的问题
  6. ASP.NET MVC载入页面常用方法
  7. vb2010 连接mysql,VB连接数据库方式汇总
  8. Windows消息钩子[键盘监控]
  9. android pc投屏,如何解决乐播投屏中投屏失败的问题【乐播投屏】
  10. Utils 前端随机生成id,中文姓名
  11. sublime主题选择
  12. Word 标题后自动添加分页符、分节符显示与查看
  13. 【RegNet】《Designing Network Design Spaces》
  14. Web前端--HTML+CSS+JavaScript响应式网络科技网页设计
  15. Netlink的简介及使用方法
  16. win7安装高版本的node解决办法
  17. localbus总线
  18. AutoCAD.Net开发问题之:层表事件的响应(续)
  19. html怎样给名片加边框,添加边框和底纹
  20. 【问题解决】ESP32报错:make: xtensa-esp32-elf-gcc: Command not found

热门文章

  1. python笔记手写照片_Python笔记-将图片转换为字符画
  2. 冰壶比赛 【C++】
  3. 微信公众号网页回调授权域名配置
  4. 高层管理者的任务和组织
  5. yum 安装Python3
  6. 对两款流行锁机的分析
  7. 环形缓冲区实现(C语言)
  8. ffprobe常用命令总结
  9. 如何考取 AWS 技术认证
  10. 出现ORA-01034: ORACLE not available ORA-27101错误