数位dp

复习数位dp

数位dp一般用记忆化搜索来解决

观察需要满足的条件,然后计入状态

状态还要记录是否达到上线,以及前导零

比如说这道题

dfs(bit,a4,a8,cnt,last,limit)

由于这道题枚举的时候不可能有前导零,所以就不记录前导零

bit表示当前考虑第bit位,从高到低

a4表示是否有4

a8表示是否有8

cnt记录最多连续出现次数,最大为3,limit记录是否卡上界

枚举这位选什么,如果卡上界,那么从0->st[bit],否则从0->9

然后判断状态是否更改

如果不卡上界记忆化

#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll l, r;
int top;
int st[];
ll dp[][][][];
ll dfs(int bit, int a4, int a8, int cnt, int last, int limit)
{
if((a4 & a8)) return ;
if(bit == ) return cnt == ;
if(!limit && dp[bit][a4][a8][cnt] != -) return dp[bit][a4][a8][cnt];
ll ret = ;
int lim = limit ? st[bit] : ;
for(int i = bit == top ? : ; i <= lim; ++i)
{
if(cnt == ) ret += dfs(bit - , a4 || i == , a8 || i == , , i, limit && i == st[bit]);
else ret += dfs(bit - , a4 || i == , a8 || i == , i == last ? cnt + : , i, limit && i == st[bit]);
}
return limit ? ret : dp[bit][a4][a8][cnt] = ret;
}
ll solve(ll n)
{
if(n == 1e10 - ) return ;
top = ;
while(n)
{
st[++top] = n % ;
n /= ;
}
return dfs(top, , , , -, );
}
int main()
{
memset(dp, -, sizeof(dp));
scanf("%lld%lld", &l, &r);
printf("%lld\n", solve(r) - solve(l - ));
return ;
}

bzoj4521的更多相关文章

  1. [BZOJ4521][CQOI2016]手机号码(数位DP)

    4521: [Cqoi2016]手机号码 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 875  Solved: 507[Submit][Status ...

  2. 【BZOJ-4521】手机号码 数位DP

    4521: [Cqoi2016]手机号码 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 303  Solved: 194[Submit][Status ...

  3. BZOJ4521: [Cqoi2016]手机号码

    Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...

  4. 【BZOJ4521】【CQOI2016】手机号码

    感觉数位dp好恶心…… 原题: 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的 ...

  5. BZOJ4521 Cqoi2016 手机号码 【数位DP】

    Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出 ...

  6. [BZOJ4521][Cqoi2016]手机号码 (数位dp)

    题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...

  7. [Bzoj4521][Cqoi2016]手机号码(数位dp)

    4521: [Cqoi2016]手机号码 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 870  Solved: 505[Submit][Status ...

  8. [bzoj4521][Cqoi2016][手机号码] (数位dp+记忆化搜索)

    Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...

  9. 【bzoj4513】储能表【数位DP】

    本来是想去学数位DP,作死挑了这道题,爆炸... 听说正确姿势应该是去做bzoj4521[手机],听说迪克们当场都A了,Orz 然后对于4513,我只想说,一.脸.懵.逼 首先,我是无论如何都无法想到 ...

随机推荐

  1. 合并SO为单独交货单

    本场景为单步交货     为客户建立专用的route.     增加一个pull rule         在做订单的时候,为订单行选择 上面建立好的route,     连续建立了 2个 订单 SO ...

  2. 最长连续序列(Longest Consecutive Sequence)

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  3. datatable的使用

    学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...

  4. Hadoop - YARN 概述

    一 概述       Apache Hadoop YARN (Yet Another Resource Negotiator,还有一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源 ...

  5. EasyRTMP手机直播推送rtmp流flash无法正常播放问题

    本文转自EasyDarwin团队Kim的博客:http://blog.csdn.net/jinlong0603/article/details/52960750 问题简介 EasyRTMP是EasyD ...

  6. Boosting AdaBoosting Algorithm

    http://math.mit.edu/~rothvoss/18.304.3PM/Presentations/1-Eric-Boosting304FinalRpdf.pdf Consider MIT ...

  7. ElasticSearch(八)关于document的一些知识点

    先查看一条数据: GET /ecommerce/product/5 { "_index" : "ecommerce", "_type" : ...

  8. Windows server 2008 R2 如何启动任务计划程序

    使用windows server 2008 R2  的任务计划程序需要启动服务 Task Scheduler 服务, windows server 2008 R2 默认状态下Task Schedule ...

  9. Qt JSON解析生成笔记

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  10. AndroidPageObjectTest_Simple.java

    以下代码使用ApiDemos-debug.apk进行测试 //这个脚本用于演示PageFactory的功能:使用注解@FindBy.@AndroidFindBy.@IOSFindBy定位元素.注解用法 ...