题目: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. R 连接数据库长数字被科学计数法解决方法

    数据库中的订单编号

  2. SGU100

    Read integers A and B from input file and write their sum in output file. Input Input file contains ...

  3. 36.分组聚合操作—bucket进行多层嵌套

    主要知识点: 分组聚合操作-嵌套bucket.         本讲以前面电商实例,从颜色到品牌进行下钻分析,每种颜色的平均价格,以及找到每种颜色每个品牌的平均价格. 比如说,现在红色的电视有4台,同 ...

  4. C#学习笔记_11_方法的隐藏和重写

    11_方法的隐藏和重写 方法的隐藏 需要使用到关键字:new 方法的重写 虚函数: 使用关键字virtual修饰的函数 虚函数可以被子类隐藏,也可以被子类重写 非虚函数只能被子类隐藏 关键字:over ...

  5. python第十二周:MySql

    MySql数据库 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不 ...

  6. 第十六节:pandas之日期时间

    Pandas日期功能扩展了时间序列,在财务数据分析中起主要作用.

  7. BNUOJ 1021 信息战(七)——情报传递

    信息战(七)——情报传递 Time Limit: 3000ms Memory Limit: 262144KB 64-bit integer IO format: %lld      Java clas ...

  8. Linux下C++开发教程收集

    http://blog.csdn.net/wangfengwf/article/category/1315687 http://wiki.jikexueyuan.com/list/c/(极客学院C++ ...

  9. 输入法InputConnection

    /**  * The InputConnection interface is the communication channel from an  * {@link InputMethod} bac ...

  10. Maven中的dependency的scope作用域详解

    1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2.compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3.provided依赖:在编译和测试的过程有效,最后 ...