bzoj 4521 [ Cqoi 2016 ] 手机号码 —— 数位DP
题目: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相关推荐
- [CQOI2016]手机号码 数位DP
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
- bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...
- bzoj 3131 [Sdoi2013]淘金(数位dp)
题目描述 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块. 一阵风吹过,金子的位置发生了 ...
- BZOJ 4521 CQOI2016 手机号码 数位dp
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4521 题意概述:给出一个区间[L,R],统计区间中满足:1.4,8不同时出现:2.至少有3 ...
- BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...
- [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...
- BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)
BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec Memory Limit: 64 MB Description 正如你所知 ...
- [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...
最新文章
- PYTHON之路(四)
- python m什么意思_Python -m参数原理及使用方法解析
- Android Studio 疑难杂症
- C语言期末成绩计算机平均分,用C语言编程平均分数
- Python 第三方扩展库
- linux sed
- Django 的第三方包
- 计算机视觉——全卷积网络(FCN)的学习笔记
- ATL 实现定制的 IE 浏览器栏、工具栏和桌面工具栏
- Dev Express 安装
- 创建模块化程序(三)
- 几何画板椭圆九种画法_几何画板怎么制作椭圆定义演示动画?
- 电脑屏幕录制软件免费
- 2018年AI智商将达到多少?未来智能实验室启动第三次世界AI智商评测
- VMware安装及使用详细教程
- 工作频率对系统功率、穿透能力、设备体积、系统性能的影响
- 什么是SVC?AVC和SVC有什么区别
- 电子计算机的基本概念简述
- ASML即将陷入困境,该对中国市场下定决心了
- 笔记本 GTX1050ti 安装win10 Ubuntu18.04 显卡问题
热门文章
- Windows内核--读懂源代码的特殊“标志“(1.4)
- 微信开发之JSSDK调用
- 计算机网络的基本组成
- 聚类(六)—— 聚类评估
- Anaconda拒绝访问
- 有哪些平台是和连连支付合作的?连连支付可以跨境支付?
- 物联网毕设 -- 智能热水器(GPRS+APP+OneNET)
- 教你轻松解除word文档保护(转)
- newifi mini 和 斐讯k1 的pandorabox 使用总结
- 硝烟中的scrum和XP——我们如何实施scrum读后笔记