洛谷P3413 SAC#1 - 萌数(数位dp)
题目描述
辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!
好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数;110是萌的,因为包含回文子串11;但是102不是萌的,1201也不是萌的。
现在SOL想知道从l到r的所有整数中有多少个萌数。
由于答案可能很大,所以只需要输出答案对1000000007(10^9+7)的余数。
输入输出格式
输入格式:
输入包含仅1行,包含两个整数:l、r。
输出格式:
输出仅1行,包含一个整数,即为答案。
输入输出样例
1 100
10
100 1000
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)相关推荐
- 洛谷 P3413 SAC#1 - 萌数(数位dp)
题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...
- 洛谷P3413 SAC#1 - 萌数【数位DP】
时空限制 1000ms / 128MB 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的 ...
- 洛谷P2606 [ZJOI2010]排列计数(数位dp)
题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很 ...
- 【洛谷P1430】序列取数【dp】
题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1430 给定一个长为n的整数序列,由A和B轮流取数(A先取).每个人可从序列的左端或右端取若干个数 ...
- 洛谷 P2657 [SCOI2009] windy数 数位DP
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...
- 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛
洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...
- 信息学奥赛一本通 1316:【例4.6】数的计数(Noip2001) | 1914:【01NOIP普及组】数的计数 | 洛谷 P1028 [NOIP2001 普及组] 数的计算
[题目链接] ybt 1316:[例4.6]数的计数(Noip2001) ybt 1914:[01NOIP普及组]数的计数 洛谷 P1028 [NOIP2001 普及组] 数的计算 [题目考点] 1. ...
- 10.10做题——USACO1.2/洛谷1207回文平方数(Dual Palindromes)
first thing:我市杨家巷发生一起爆炸事故,死亡17人,愿逝者安息! second thing:明天NOIP初赛,RP++,排名–;分数++; third thing:好像USACO评测系统真 ...
- [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}
题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...
最新文章
- ospf 环回口的路由条目_OSPF (4)
- HTML 常用标签全称
- 腾讯极客攻破iPhone刷脸解锁,凭一副眼镜,转走熟睡用户的钱
- 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言
- 如何让MFC编写的应用程序(用VC6.0开发)能在别的电脑上运行
- MySQL中空字符串与null的区别:计数 判断 时间
- 计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」
- Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务
- 基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告
- ie代理配置错误_电缆厂组织结构图的7个常犯错误!
- 阅读器java_纯Java文档阅读器
- 未来人在数据分析中的角色转变
- 音视频即时通讯 功能需求汇总
- hping 详解_HPing3构造多种类型DDOS攻击使用详解
- Lrc歌词批量下载助手 MP3歌词批量下载助手
- WEB前端开发规范文档示例
- 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250
- Spring Spring-data-redis 实现的消息队列
- c 语言奇数幻方代码,【C】——幻方算法(示例代码)
- 智慧仓储:打造仓储管理一张图
热门文章
- python可用编程模块规模多大_哪些Python模块可用于编程竞赛?
- apache struts linux,Apache Struts2远程代码执行漏洞(S2-053)(CVE-2017-12611)
- 计算机主机制作过程,计算机主机箱的制作方法
- c语言函数官网,c语言函数
- 2019交通顶级期刊_2019年顶级11面试准备书
- android数据绑定_Android数据绑定高级概念
- adalm pluto_Apache Pluto和PHP集成示例教程
- 使用Spring Boot CLI的Spring Boot Initilizr
- arduino图形编程——ardublock
- Python+Selenium FAQ