题目描述

辣鸡蒟蒻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门都没入呢……

  别指望我能讲啥,自己看代码理解吧……

  只要注意一下下面代码里的$Pre$和$per$,一个表示前一个数,一个表示前两个数,因为回文数只会有$aba$和$aa$两种类型,然后只要注意特判一下当前位置是$1$的就行了

 1 //minamoto
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #define ll long long
 6 using namespace std;
 7 const int N=1005,mod=1e9+7;
 8 char s1[N],s2[N];ll dp[N][N][2];int a[N];
 9 ll dfs(int pos,int Pre,int per,int t,int k,int flag){
10     if(pos<=0) return t;
11     if(!flag&&~dp[pos][Pre][t]) return dp[pos][Pre][t];
12     int end=flag?a[pos]:9;ll res=0;
13     for(int i=0;i<=end;++i)
14     (res+=dfs(pos-1,i,k?Pre:-1,t||(i==Pre&&k)||(i==per&&k),k||i,flag&&(i==end)))%=mod;
15     if(!flag&&k&&~per) dp[pos][Pre][t]=res;
16     return res;
17 }
18 int solve(char *s){
19     int len=0,slen=strlen(s+1);
20     while(slen) a[++len]=s[slen--]-'0';
21     memset(dp,-1,sizeof(dp));
22     return dfs(len,-1,-1,0,0,1);
23 }
24 int main(){
25     scanf("%s%s",s1+1,s2+1);
26     int len=strlen(s1+1);
27     if(s1[len]!=0) s1[len]-=1;
28     else s1[len-1]-=1,s1[len]='9';
29     printf("%d\n",(solve(s2)-solve(s1)+mod)%mod);
30     return 0;
31 }

转载于:https://www.cnblogs.com/bztMinamoto/p/9539117.html

洛谷P3413 SAC#1 - 萌数(数位dp)相关推荐

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

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

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

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

  3. 洛谷P2606 [ZJOI2010]排列计数(数位dp)

    题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很 ...

  4. 【洛谷P1430】序列取数【dp】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1430 给定一个长为n的整数序列,由A和B轮流取数(A先取).每个人可从序列的左端或右端取若干个数 ...

  5. 洛谷 P2657 [SCOI2009] windy数 数位DP

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...

  6. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...

  7. 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算

    [题目链接] ybt 1316:[例4.6]数的计数(Noip2001) ybt 1914:[01NOIP普及组]数的计数 洛谷 P1028 [NOIP2001 普及组] 数的计算 [题目考点] 1. ...

  8. 10.10做题——USACO1.2/洛谷1207回文平方数(Dual Palindromes)

    first thing:我市杨家巷发生一起爆炸事故,死亡17人,愿逝者安息! second thing:明天NOIP初赛,RP++,排名–;分数++; third thing:好像USACO评测系统真 ...

  9. [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}

    题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...

最新文章

  1. ospf 环回口的路由条目_OSPF (4)
  2. HTML 常用标签全称
  3. 腾讯极客攻破iPhone刷脸解锁,凭一副眼镜,转走熟睡用户的钱
  4. 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言
  5. 如何让MFC编写的应用程序(用VC6.0开发)能在别的电脑上运行
  6. MySQL中空字符串与null的区别:计数 判断 时间
  7. 计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」
  8. Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务
  9. 基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告
  10. ie代理配置错误_电缆厂组织结构图的7个常犯错误!
  11. 阅读器java_纯Java文档阅读器
  12. 未来人在数据分析中的角色转变
  13. 音视频即时通讯 功能需求汇总
  14. hping 详解_HPing3构造多种类型DDOS攻击使用详解
  15. Lrc歌词批量下载助手 MP3歌词批量下载助手
  16. WEB前端开发规范文档示例
  17. 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250
  18. Spring Spring-data-redis 实现的消息队列
  19. c 语言奇数幻方代码,【C】——幻方算法(示例代码)
  20. 智慧仓储:打造仓储管理一张图

热门文章

  1. python可用编程模块规模多大_哪些Python模块可用于编程竞赛?
  2. apache struts linux,Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611)
  3. 计算机主机制作过程,计算机主机箱的制作方法
  4. c语言函数官网,c语言函数
  5. 2019交通顶级期刊_2019年顶级11面试准备书
  6. android数据绑定_Android数据绑定高级概念
  7. adalm pluto_Apache Pluto和PHP集成示例教程
  8. 使用Spring Boot CLI的Spring Boot Initilizr
  9. arduino图形编程——ardublock
  10. Python+Selenium FAQ