洛谷 P3413 【萌数】
敲完这篇题解,我就,我就,我就,嗯,好,就这样吧。。。
思路分析:
首先我们要知道一个回文串的性质——假如说一个[l-1,r+1]的串是回文的,那么[l,r]一定也是回文的。
所以我们只要记录前一个数和前前一个数就可以了,假如说当前数和他们(前一个数和前前一个数)当中的任意一个相等,那么它就一定是一个萌数。
知道了这些我们就可以开始设计状态了。
dp[pos][pre1][pre2]表示当前找到pos位,前一个数为pre1,前前一个数为pre2时的萌数个数。
代码实现:
var
a:array[1..2000] of Integer;
dp:array[1..2000,0..9,0..9,0..1] of Int64;
len,i:Longint;
ans,oo,t:int64;
l,r,st:ansistring;
function dfs(pos,pre1,pre2,lead,flag,val:Longint):int64;
var
i,limit,x:Integer;
res:int64;
begin
if pos>len then exit(val);
if (pre2>=0)and(lead+flag=0)and(dp[pos][pre1][pre2][val]<>-1) then dfs:=(dp[pos][pre1][pre2][val]) else
begin
if flag=1 then limit:=a[pos] else limit:=9;
res:=0;
for i:=0 to limit do
begin
if lead=1 then x:=-1 else x:=pre1;
res:=(res+dfs(pos+1,i,x,ord((lead=1)and(i=0)),ord((flag=1)and(i=limit)),ord((val=1)or((i=pre1)and(lead=0))or((i=pre2)and(lead=0)))))mod oo;
end;
if (pre2>=0)and(lead+flag=0) then dp[pos][pre1][pre2][val]:=res;
dfs:=res;
end;
end;
begin
oo:=1000000007;
readln(st);
t:=pos(' ',st);
l:=copy(st,1,t-1);
len:=length(l);
delete(st,1,t);
for i:=1 to len do
a[i]:=ord(l[i])-48;
while i>0 do
if a[i]>0 then begin dec(a[i]); break; end
else begin a[i]:=9; dec(i); end;
fillchar(dp,sizeof(dp),255);
ans:=dfs(1,-1,-1,1,1,0);
r:=st;
len:=length(r);
for i:=1 to len do
a[i]:=ord(r[i])-48;
ans:=((dfs(1,-1,-1,1,1,0)-ans)mod oo+oo)mod oo;
writeln(ans);
end.
洛谷 P3413 【萌数】的更多相关文章
- 洛谷$P3413$ 萌数 $SAC\#1$ 数位$dp$
正解:数位$dp$ 解题报告: 传送门! 非常套路的数位$dp$,,,?打起来就很爽昂,,,不要脑子,我就很爱嘻嘻嘻 然后$[l,r]$这种问题不显然考虑套路地搞成$[1,l-1]$和$[1,r]$嘛 ...
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- 洛谷P1288 取数游戏II(博弈)
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...
- 洛谷P3413 SAC#1 - 萌数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P3413 题目大意: 定义萌数指:满足"存在长度至少为2的回文子串"的数. 求区间 \([L,R]\) ...
- 洛谷P3413 SAC#1 - 萌数(数位dp)
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:1 ...
- 【洛谷P3413】萌数
题目大意:求区间 [l,r] 内萌数的个数,其中萌数定义为数位中存在长度至少为 2 的回文子串的数字. 题解:l, r 都是 1000 位级别的数字,显然是一道数位 dp 的题目,暴力直接去世. 发现 ...
- 洛谷 P1392 取数
题面 在做这道题前,先要会他的弱化版(实际一模一样,只是愚蠢的洛谷评测级别差了一档(睿智如姬无夜)) ----------------------------------弱化版------------ ...
- 洛谷——P2421 A-B数对(增强版)
题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈. 题目描述 给出N 个从小到大排好序的整 ...
- 洛谷 P5206 - [WC2019]数树(集合反演+NTT)
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(E_1,E_2\) 而言,为它们填上 \(1\sim y\) 使其合法的方案数显然是 \(y\) 的 \(E_1 ...
随机推荐
- 【平台开发】— 2.前端:vue-element-admin
前端我虽然没怎么写过,但也并不陌生.之前做web自动化,网页结构没少看,html,css,js也都断断续续了解过. 如果从空白开始写,肯定还是需要花不少时间的. 好在网上有了不少成熟的后台系统的前端脚 ...
- lombok配置
lombok在springboot中无需配置即可在控制台输出. 一般使用backlog.xml作为配置文件. 在application中指定backlog位置 不做任何配置时候,logback.xml ...
- 基于Celery在多台云服务器上实现分布式
起源 最近参加公司里的一个比赛,比赛内容里有一项是尽量使用分布式实现项目.因为项目最终会跑在jetsonnano,一个贼卡的开发板,性能及其垃圾.而且要求使用python? 找了很多博客,讲的真的是模 ...
- 网络协议HTTP、TCP/IP、Socket
网络协议HTTP.TCP/IP.Socket 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的 ...
- find 用正则表达式查找符合yyyy-mm-dd-bddd模式的目录
yyyy-dd-mm-bddd模式解释: yyyy:年份,如2020 mm:月份,如03 dd:日期,如22 -b:意为备份,-b为固定字符串 ddd:三位序列号,从001~999 符合此格式的目录名 ...
- Explain Plan试分析
注:以下是本人对Explain Plan的试分析,有不对的地方希望大家指出.关于如何查看Oracle的解释计划请参考:https://www.cnblogs.com/xiandedanteng/p/1 ...
- IDEA创建新空项目
IDEA创建新空项目 File -> New -> Project -> Empty Project -> 然后OK 这个是什么都不能做的,然后我们创建Module. File ...
- “未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决方案
不论是连接Access数据库或是SQL Server数据库,"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序."这个问题从Of ...
- burpsuite抓包乱码问题
网上百度说只需要Change Font选择中文字体即可,但是我这边试过还是乱码,按照网上一篇博客说抓包中按钮展示乱码的问题,在下面Character Sets选择Use a specific char ...
- SDWebImageInfo
SDWebImage 简介 iOS中著名的牛逼的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等 用法极其简单,功能十分强大,大大提高了网络图片的处理效率 国内超过90% ...