bzoj 4521 [Cqoi2016]手机号码——数位dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4521
dfs真好用~
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=;
int dg[N];
ll l,r,dp[N][][N][][][];
ll dfs(int p,int len,int lst,bool p0,bool p1,bool ok,bool fx)
{
if(!p){return ok&(!(p0&p1));}
if(!fx&&dp[p][len][lst][p0][p1][ok]!=-)return dp[p][len][lst][p0][p1][ok];
int st=;if(p==)st=;
int end=;if(fx)end=dg[p];
ll ret=;
for(int i=st;i<=end;i++)
{
int lenn=;if(i==lst)lenn=len+;
if(lenn>)lenn=;
ret+=dfs(p-,lenn,i,p0|(i==),p1|(i==),ok|(lenn==),fx&(i==dg[p]));
}
if(!fx)dp[p][len][lst][p0][p1][ok]=ret;
return ret;
}
ll calc(ll x)
{
if(x<1e10)return ;
for(int i=;i<=;i++)dg[i]=x%,x/=;
memset(dp,-,sizeof dp);
return dfs(,,,,,,);
}
int main()
{
scanf("%lld%lld",&l,&r);
printf("%lld\n",calc(r)-calc(l-));
return ;
}
bzoj 4521 [Cqoi2016]手机号码——数位dp的更多相关文章
- BZOJ 4521 [CQOI2016]手机号码 - 数位DP
		
Description 在$[L, R]$找出有几个数满足两个条件 : 1 : 不同时含有$4$ 和 $8$ 2 : 至少有$3$个相邻的数相同 Solution 非常容易的数位DP, $pos$ 为 ...
 - [BZOJ4521][CQOI2016]手机号码(数位DP)
		
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 875 Solved: 507[Submit][Status ...
 - bzoj 4521: [Cqoi2016]手机号码【数位dp】
		
比较基础的数位dp,dfs的时候带上上一位,上上位,是否已经有连续3个相同位,是否有4,是否有8即可 但是要注意两点(在洛谷上一直70) 当l=1e10的时候,直接输出clc(r)即可,因为如果再减去 ...
 - [CQOI2016]手机号码 数位DP
		
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
 - [Luogu P4124] [CQOI2016]手机号码 (数位DP)
		
题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态 ...
 - bzoj 4521: [Cqoi2016]手机号码
		
感觉get到了一种数位dp的新姿势,加一位表示当前要填的数有没有限制(感觉以前的写法都太蠢了). 这么写有两个地方要注意: 1.每dp到一位时需要f[i][初始状态]++,相当于这位前都是前导零(这道 ...
 - [bzoj4521][Cqoi2016][手机号码] (数位dp+记忆化搜索)
		
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
 - BZOJ 4521 CQOI 2016 手机号码 数位DP
		
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 539 Solved: 325[Submit][Status ...
 - 【BZOJ-4521】手机号码       数位DP
		
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 303 Solved: 194[Submit][Status ...
 
随机推荐
- 使用jquery的lazy loader插件实现图片的延迟加载
			
当网站上有大量图片要展示的话,如果一次把所有的图片都加载出来的话,这势必会影响网站的加载速度,给用户带来比较差的体验.通过使用jquery的lazy loader插件可以实现图片的延迟加载,当网页比较 ...
 - Python学习day01 - 计算机基础
			
第一天 什么是编程 语言就是用来交流的. 语言+火构成了人类的文明 Python语言用来和计算机交流 通过他和计算机交流,然后完成很多程序员想要完成的事情,就叫编程. 为什么要编程 节省劳动力,更高效 ...
 - MySQL Server Logs
			
日志记录存储方式 #日志记录存储方式 mysql> show variables like 'log_output'; mysql> set global log_output='FILE ...
 - error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...
			
1.VC6中,说可以把函数在头文件中定义为:afx_msg void OnProgress()这样 但是在VS2005及以上,要求很严格,必须函数返回值为LRESULT类型,所以在VS2005及以上, ...
 - 近期开发storm遇到一些问题的解决点
			
storm开发解决问题点1.kafka消费速度跟不上问题 这个问题可以从加大topic partition进行解决,可以在topic正在运行时候运行命令 ./kafka-topics --alter ...
 - 关于obj文件的理解
			
编译器先编译.cpp为obj文件,看看文件内有没有冲突,然后再进行链接,链接头文件引入的lib库等等,然后就生成exe文件了,下面这个图说的很好:
 - 2019-5-24-WPF-源代码-从零开始写一个-UI-框架
			
title author date CreateTime categories WPF 源代码 从零开始写一个 UI 框架 lindexi 2019-05-24 15:54:36 +0800 2018 ...
 - Android 开发 防止按键连续点击
			
前言 按键防止连续点击是任何一个项目都要考虑的功能.下面我们将介绍几种防止按键连续点击的方法 用工具类实现 /** *@content:按键延时工具类,用于防止按键连点 *@time:2019-5-1 ...
 - 分布式事务中间件 Fescar—RM 模块源码解读
			
前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点.我所在的团队也遇到了这个问题,为解决这个问题上 ...
 - Django项目:CRM(客户关系管理系统)--75--65PerfectCRM实现CRM课程分数排名
			
# classtop_urls.py # ————————64PerfectCRM实现CRM课程排名详情———————— from django.conf.urls import url from b ...