题目: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[][][][][][],a[],ans;//i,数字,限制,二连,三连, 4/8
int tmp[];
ll solve(ll mx)
{
ll tt=mx;
for(int i=;i<=;i++)a[i]=tt%,tt/=;
memset(f,,sizeof f);
f[][][][][][]=;//1 表示有限制
for(int i=;i;i--)
for(int j=;j<=;j++)//i+1
for(int t1=;t1<=;t1++)//限制
for(int t2=;t2<=;t2++)//二连
for(int t3=;t3<=;t3++)//三连
for(int t4=;t4<=;t4++)// 4/8
if(f[i+][j][t1][t2][t3][t4])
{
for(int k=;k<=(t1?a[i]:);k++)
{
if((t4==&&k==)||(t4==&&k==))continue;
f[i][k][t1&&k==a[i]][k==j][t3|(t2&&k==j)][t4|tmp[k]]+=
f[i+][j][t1][t2][t3][t4];
}
}
ll ans=;
for(int j=;j<=;j++)
for(int t1=;t1<=;t1++)
for(int t2=;t2<=;t2++)
for(int t4=;t4<=;t4++)
ans+=f[][j][t1][t2][][t4];
return ans;
}
int main()
{
scanf("%lld%lld",&l,&r);
tmp[]=; tmp[]=;
printf("%lld\n",solve(r)-solve(l-));
return ;
}

bzoj 4521 [ Cqoi 2016 ] 手机号码 —— 数位DP的更多相关文章

  1. BZOJ 4521 CQOI 2016 手机号码 数位DP

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

  2. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

  3. BZOJ 4521 [CQOI2016]手机号码 - 数位DP

    Description 在$[L, R]$找出有几个数满足两个条件 : 1 : 不同时含有$4$ 和 $8$ 2 : 至少有$3$个相邻的数相同 Solution 非常容易的数位DP, $pos$ 为 ...

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

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

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

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

  6. BZOJ.4513.[SDOI2016]储能表(数位DP)

    BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0} ...

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

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

  8. [Luogu P4124] [CQOI2016]手机号码 (数位DP)

    题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态 ...

  9. [bzoj 1026]windy数(数位DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 分析: 简单的数位DP啦 f[i][j]表示数字有i位,最高位的数值为j的windy数总 ...

随机推荐

  1. Linux下清空文件的常用方法

    1. 本人用的最多,感觉也是最方便的: > filename.log   2. : > filename.log 3. cat /dev/null > filename.log

  2. Sandbox 沙盒

    In computer security, a sandbox is a security mechanism for separating running programs, usually in ...

  3. GatewayWorker + LayIM实现即时聊天

    一.程序目录结构 二.代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1.前端代码 <!DOCTYPE html> ...

  4. css知识框架

  5. demo记录

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...

  6. webpack-dev-middleware 与 webpack-hot-middlware

    dev-middleware:  live reload的实现: 思考一下我們要如何更新(live reload)呢? 當然是需要取得 webpack 編好的資料啊,於是就需要在從 request 到 ...

  7. 面向对象:__getitem__、__setitem__、__delitem__

    item系列 class Person(object): def __init__(self, name): self.name = name def __getitem__(self, item): ...

  8. Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...

  9. 【转载】Apache shutdown unexpectedly启动错误解决方法

    http://blog.csdn.net/dong123dddd/article/details/21372179 xampp启动时显示的错误为: 9:52:41  [Apache] Attempti ...

  10. 1.4.1 安装Python扩展库

    Python之所以得到各行业领域工程师.策划师以及管理人员的青睐,与涉及各行业各领域开发的扩展库也有很大关系,不仅数量众多.功能强大,关键是用起来很方便.虽然Python标准库已经拥有了非常强大的功能 ...