[LUOGU3413] SAC#1 - 萌数
题目背景
本题由世界上最蒟蒻最辣鸡最撒比的SOL提供。
寂月城网站是完美信息教室的官网。地址:http://191.101.11.174/mgzd 。
题目描述
辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!
好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数;110是萌的,因为包含回文子串11;但是102不是萌的,1201也不是萌的。
现在SOL想知道从l到r的所有整数中有多少个萌数。
由于答案可能很大,所以只需要输出答案对1000000007(10^9+7)的余数。
输入输出格式
输入格式:
输入包含仅1行,包含两个整数:l、r。
输出格式:
输出仅1行,包含一个整数,即为答案。
输入输出样例
说明
记n为r在10进制下的位数。
对于10%的数据,n <= 3。
对于30%的数据,n <= 6。
对于60%的数据,n <= 9。
对于全部的数据,n <= 1000,l < r。
随便写写
f[i][j][k][0/1],决策到第i位,上一位的数字是j,上上位的数字是k,是否曾经出现过回文串, 的总数。
然后就记忆化搜索一下,记得判断前一位和前前一位是否合法...
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define int long long
inline int read() {
int res=;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) res=(res<<)+(res<<)+(ch^), ch=getchar();
return res;
}
#define reg register
#define mod 1000000007
int l, r; int f[][][][];
int wei[], cnt; inline int dp(int pos, int lst1, int lst2, bool hav, bool flag, bool fir, bool sec)
{ //是否有限制
if (pos == ) return hav;
if (!fir and !sec and !flag and f[pos][lst1][lst2][hav] != -) return f[pos][lst1][lst2][hav] % mod;
int lim = flag ? wei[pos] : ;
int ans = ;
for (reg int i = ; i <= lim ; i ++)
{
if (i == lst1 and !fir) ans = (ans + dp(pos - , i, lst1, , flag && i == wei[pos], fir && i == , sec && lst1 == )) % mod;
else if (i == lst2 and !fir and !sec) ans = (ans + dp(pos - , i, lst1, , flag && i == wei[pos], fir && i == , sec && lst1 == )) % mod;
else ans = (ans + dp(pos-, i, lst1, hav, flag && i == wei[pos], fir && i == , sec && lst1 == )) % mod;
}
if (!flag and !fir and !sec) f[pos][lst1][lst2][hav] = ans % mod;
return ans % mod;
} signed main()
{
memset(f, -, sizeof f);
int res1 = , res2 = ; string a;
cin >> a;
cnt = ;
for (reg int i = a.length() - ; i >= ; i --) wei[++cnt] = a[i] - '';
int k = ;
if (wei[]) wei[]--;
else {while(wei[k] == ) wei[k] = , k++; wei[k]--;} res1 = dp(cnt, , , , , , ) % mod; cnt = ;
cin >> a;
for (reg int i = a.length() - ; i >= ; i --) wei[++cnt] = a[i] - '';
res2 = dp(cnt, , , , , , ) % mod; printf("%lld\n", (res2 - res1 + mod) % mod);
return ;
}
[LUOGU3413] SAC#1 - 萌数的更多相关文章
- luogu 3413 SAC#1 - 萌数
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:1 ...
- 洛谷P3413 SAC#1 - 萌数(数位dp)
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:1 ...
- 题解 P3413 【SAC#1 - 萌数】
这道题刚开始正向思维,然后处理重复的时候咕咕了. 参考了@巨型方块 大佬的题解后AC了,在这里就说几个我觉得比较重要或是容易被忽略的点,然后补充一些跳过的证明. 这道题的状态可以设为$dp[i][j] ...
- 洛谷P3413 SAC#1 - 萌数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P3413 题目大意: 定义萌数指:满足"存在长度至少为2的回文子串"的数. 求区间 \([L,R]\) ...
- [洛谷P3413]SAC#1 - 萌数
题目大意:求$[l,r](0\leqslant l<r< 10^{1001})$中存在长度至少为$2$的回文串的数字数 题解:数位$DP$,发现如果有回文串,若长度为偶数,一定有两个相同的 ...
- [luoguP3413] SAC#1 - 萌数(数位DP)
传送门 gtm的数位dp! 看到好多题解,都是记忆化搜索,好像非常方便啊,但是我还是用递推好了,毕竟还是有些类似数位dp的题用递推的思路,记忆化做不了,现在多培养一下思路 首先这道题, 只看长度大于等 ...
- LUOGU P3413 SAC#1 - 萌数(数位dp)
传送门 解题思路 首先这道题如果有两个以上长度的回文串,那么就一定有三个或两个的回文串,所以只需要记录一下上一位和上上位填的数字就行了.数位\(dp\),用记忆化搜索来实现.设\(f[i][j][k] ...
- P3413 SAC#1 - 萌数
题目 洛谷 数位动规用爆搜真好玩 做法 含有回文串实际我们仅需判断是否有\(2/3\)回文串 \(Dfs(now,num,pre,ly,lead,prel,top)\): 在第\(now\)位 \(n ...
- 洛谷 P3413 SAC#1 - 萌数
题意简述 求l~r之间存在长度至少为2的回文子串的正整数的个数 题解思路 数位DP 注意到有偶数长度的回文串必有长度为2的回文串,有奇数长度的回文串必有长度为3的回文串 所以只需判断与前一位,前两位是 ...
随机推荐
- Linux常用命令 —— 进程类
service (CentOs6) 1.service 服务名 start -------------- 启动 2.service 服务名 stop ...
- charles 映射到本地文件/文件夹
本文参考:charles 映射到本地文件/文件夹 本地映射/Map Local Settings 功能:把需要请求网络的文件映射为请求本地文件 本地映射工具 本地映射工具使您能够使用本地文件,就好比他 ...
- Uva 232 一个换行WA 了四次
由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...
- [Advanced Python] 13 - "Decorator": syntactic sugar
单独一章复习:Python 函数装饰器,廖雪峰讲装饰器 基本概念 函数作为变量 从函数中返回函数 子函数写在外面貌似也可以,可这样就少了“封装性”. def greet(): return " ...
- React-leaflet在ant-design pro中的基本使用
react-leaflet的github地址:https://github.com/PaulLeCam/react-leaflet react-leaflet-markercluster点聚合gith ...
- 数据结构之二叉树篇卷一 -- 建立二叉树(With Java)
一.定义二叉树节点类 package tree; public class Node<E> { public E data; public Node<E> lnode; pub ...
- SpringBootSecurity学习(01)网页版登录入门介绍
Web应用安全管理 Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.权限管理的设计一般使用角色 ...
- 知名大厂如何搭建大数据平台&架构
今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...
- CVPR 2019 论文解读 | 小样本域适应的目标检测
引文 最近笔者也在寻找目标检测的其他方向,一般可以继续挖掘的方向是从目标检测的数据入手,困难样本的目标检测,如检测物体被遮挡,极小人脸检测,亦或者数据样本不足的算法.这里笔者介绍一篇小样本(few ...
- Eureka实战-2【构建Multi Zone Eureka Server】
工程pom中公共依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEnco ...