P3413 SAC#1 - 萌数
题目
洛谷
数位动规用爆搜真好玩
做法
含有回文串实际我们仅需判断是否有\(2/3\)回文串
\(Dfs(now,num,pre,ly,lead,prel,top)\):
在第\(now\)位
\(now-1\)位,\(now-2\)位
是否合法
\(now-1\)位是否为前导\(0\),\(now-2\)为是否为前导\(0\)
是否受限
My complete code
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL maxn=1009,p=1e9+7;
LL ans;
LL a[maxn],f[maxn][10][10][2][2][2];
char s1[maxn],s2[maxn];
LL Dfs(LL now,LL num,LL pre,LL ly,LL lead,LL prel,LL top){
	if(!now) return ly;
	if(!top && f[now][num][pre][ly][lead][prel]!=-1) return f[now][num][pre][ly][lead][prel];
	LL ret(0);
	LL Up=top?a[now]:9;
	for(LL i=0;i<=Up;++i)
	    (ret+=Dfs(now-1,i,num,ly||(!lead&&i==num)||(!prel&&i==pre),lead&&!i,lead,top&&(i==Up))%p)%=p;
	if(!top) f[now][num][pre][ly][lead][prel]=ret;
	return ret;
}
int main(){
	scanf(" %s %s",s1+1,s2+1);
	LL nl(strlen(s1+1)),nr(strlen(s2+1));
	LL tot(0);
	for(LL i=nr;i>=1;--i) a[++tot]=s2[i]-'0';
	memset(f,-1,sizeof(f));
	ans+=Dfs(tot,0,0,0,1,1,1);
	tot=0;
	for(LL i=nl;i>=1;--i) a[++tot]=s1[i]-'0';
	if(nl==1 && a[1]==0){
		cout<<ans;
		return 0;
	}
	--a[1];
	LL now(1);
	while(a[now]<0){
		a[now]=9;
		--a[++now];
	}
	while(a[tot]==0) --tot;
	ans=(ans-Dfs(tot,0,0,0,1,1,1)+p)%p;
	cout<<ans;
	return 0;
}
												
											P3413 SAC#1 - 萌数的更多相关文章
- 洛谷P3413 SAC#1 - 萌数 题解 数位DP
		
题目链接:https://www.luogu.com.cn/problem/P3413 题目大意: 定义萌数指:满足"存在长度至少为2的回文子串"的数. 求区间 \([L,R]\) ...
 - 洛谷P3413 SAC#1 - 萌数(数位dp)
		
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:1 ...
 - [洛谷P3413]SAC#1 - 萌数
		
题目大意:求$[l,r](0\leqslant l<r< 10^{1001})$中存在长度至少为$2$的回文串的数字数 题解:数位$DP$,发现如果有回文串,若长度为偶数,一定有两个相同的 ...
 - LUOGU  P3413 SAC#1 - 萌数(数位dp)
		
传送门 解题思路 首先这道题如果有两个以上长度的回文串,那么就一定有三个或两个的回文串,所以只需要记录一下上一位和上上位填的数字就行了.数位\(dp\),用记忆化搜索来实现.设\(f[i][j][k] ...
 - 洛谷 P3413 SAC#1 - 萌数
		
题意简述 求l~r之间存在长度至少为2的回文子串的正整数的个数 题解思路 数位DP 注意到有偶数长度的回文串必有长度为2的回文串,有奇数长度的回文串必有长度为3的回文串 所以只需判断与前一位,前两位是 ...
 - 题解 P3413 【SAC#1 - 萌数】
		
这道题刚开始正向思维,然后处理重复的时候咕咕了. 参考了@巨型方块 大佬的题解后AC了,在这里就说几个我觉得比较重要或是容易被忽略的点,然后补充一些跳过的证明. 这道题的状态可以设为$dp[i][j] ...
 - luogu 3413 SAC#1 - 萌数
		
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:1 ...
 - [LUOGU3413] SAC#1 - 萌数
		
题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...
 - [luoguP3413] SAC#1 - 萌数(数位DP)
		
传送门 gtm的数位dp! 看到好多题解,都是记忆化搜索,好像非常方便啊,但是我还是用递推好了,毕竟还是有些类似数位dp的题用递推的思路,记忆化做不了,现在多培养一下思路 首先这道题, 只看长度大于等 ...
 
随机推荐
- plsql programming 12 集合(忽略, 个人感觉用不到)
			
关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用 ...
 - nginx 用法
			
nginx配置location总结及rewrite规则写法 如何将 /health 重定向到 /health.html https://stackoverflow.com/questions/4614 ...
 - 【转】如何彻底删除SVN中的文件和文件夹(附恢复方法)
			
这里假设SVN项目的目录为 /data/svn/project,我们想排除trunk/test.exe文件和trunk/notallowed/目录,操作步骤如下及执行的svn命令(在svn安装目录的b ...
 - ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录
			
在datagrid中toolbar添加searchbox查询框,根据列范围查询数据,先看效果图: 1. searchbox采用easyui的Demo例子,再加以js扩展,根据datagrid中的列数据 ...
 - 2017 css新特性
			
2017年要学习的三个CSS新特性 这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东 ...
 - ios数据存储方式FMDB
			
本文转载至 http://blog.csdn.net/chen505358119/article/details/9289489 分类: ios2013-07-10 14:05 2471人阅读 评论( ...
 - confluence数据备份
			
上篇文章总结了confluence的docker-compose的搭建,但是考虑到数据安全性问题,需要最数据库进行备份 因为mysql的data目录已经挂载到宿主机,所以直接对mysql容器的宿主机进 ...
 - 《挑战程序设计竞赛》2.1 广度优先搜索 AOJ0558 POJ3669 AOJ0121
			
AOJ0558 原文链接: AOJ0558 题意: 在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每 ...
 - Centos之目录处理命令(七)
			
linux中 关于目录 有几个重要概念 一个是 / 根目录 还有一个当前用户的家目录 比如 root用户的家目录是 /root 普通用户的家目录是/home/xxx 下 root登录 默认家目录 ...
 - 使用jquery的ajax方法获取下拉列表值
			
AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,用户体验非常好. ...