题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4521

数位DP,记录好多维状态;

写了半天,复杂得写不下去了,于是参考一下TJ...

练习简洁地写出数位DP。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll l,r,f[15][15][3][3][3][3],a[15],ans;//i,数字,限制,二连,三连, 4/8
int tmp[15];
ll solve(ll mx)
{ll tt=mx;for(int i=1;i<=11;i++)a[i]=tt%10,tt/=10;memset(f,0,sizeof f);f[12][0][1][0][0][0]=1;//1 表示有限制 for(int i=11;i;i--)for(int j=0;j<=9;j++)//i+1for(int t1=0;t1<=1;t1++)//限制 for(int t2=0;t2<=1;t2++)//二连 for(int t3=0;t3<=1;t3++)//三连 for(int t4=0;t4<=2;t4++)// 4/8 if(f[i+1][j][t1][t2][t3][t4]){for(int k=0;k<=(t1?a[i]:9);k++){if((t4==1&&k==8)||(t4==2&&k==4))continue;f[i][k][t1&&k==a[i]][k==j][t3|(t2&&k==j)][t4|tmp[k]]+=f[i+1][j][t1][t2][t3][t4];}}ll ans=0;for(int j=0;j<=9;j++)for(int t1=0;t1<=1;t1++)for(int t2=0;t2<=1;t2++)for(int t4=0;t4<=2;t4++)ans+=f[1][j][t1][t2][1][t4];return ans;
}
int main()
{scanf("%lld%lld",&l,&r);tmp[4]=1; tmp[8]=2;printf("%lld\n",solve(r)-solve(l-1));return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/9350397.html

bzoj 4521 [ Cqoi 2016 ] 手机号码 —— 数位DP相关推荐

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

    [CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...

  2. bzoj 1026: [SCOI2009]windy数 数位DP算法笔记

    数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...

  3. bzoj 3131 [Sdoi2013]淘金(数位dp)

    题目描述 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块. 一阵风吹过,金子的位置发生了 ...

  4. BZOJ 4521 CQOI2016 手机号码 数位dp

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4521 题意概述:给出一个区间[L,R],统计区间中满足:1.4,8不同时出现:2.至少有3 ...

  5. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  6. BZOJ 3329 Xorequ (数位DP、矩阵乘法)

    BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...

  7. [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]

    DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...

  8. BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

    BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知 ...

  9. [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】

    题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...

最新文章

  1. PYTHON之路(四)
  2. python m什么意思_Python -m参数原理及使用方法解析
  3. Android Studio 疑难杂症
  4. C语言期末成绩计算机平均分,用C语言编程平均分数
  5. Python 第三方扩展库
  6. linux sed
  7. Django 的第三方包
  8. 计算机视觉——全卷积网络(FCN)的学习笔记
  9. ATL 实现定制的 IE 浏览器栏、工具栏和桌面工具栏
  10. Dev Express 安装
  11. 创建模块化程序(三)
  12. 几何画板椭圆九种画法_几何画板怎么制作椭圆定义演示动画?
  13. 电脑屏幕录制软件免费
  14. 2018年AI智商将达到多少?未来智能实验室启动第三次世界AI智商评测
  15. VMware安装及使用详细教程
  16. 工作频率对系统功率、穿透能力、设备体积、系统性能的影响
  17. 什么是SVC?AVC和SVC有什么区别
  18. 电子计算机的基本概念简述
  19. ASML即将陷入困境,该对中国市场下定决心了
  20. 笔记本 GTX1050ti 安装win10 Ubuntu18.04 显卡问题

热门文章

  1. Windows内核--读懂源代码的特殊“标志“(1.4)
  2. 微信开发之JSSDK调用
  3. 计算机网络的基本组成
  4. 聚类(六)—— 聚类评估
  5. Anaconda拒绝访问
  6. 有哪些平台是和连连支付合作的?连连支付可以跨境支付?
  7. 物联网毕设 -- 智能热水器(GPRS+APP+OneNET)
  8. 教你轻松解除word文档保护(转)
  9. newifi mini 和 斐讯k1 的pandorabox 使用总结
  10. 硝烟中的scrum和XP——我们如何实施scrum读后笔记