bzoj4521
数位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的更多相关文章
- [BZOJ4521][CQOI2016]手机号码(数位DP)
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 875 Solved: 507[Submit][Status ...
- 【BZOJ-4521】手机号码 数位DP
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 303 Solved: 194[Submit][Status ...
- BZOJ4521: [Cqoi2016]手机号码
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
- 【BZOJ4521】【CQOI2016】手机号码
感觉数位dp好恶心…… 原题: 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的 ...
- BZOJ4521 Cqoi2016 手机号码 【数位DP】
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出 ...
- [BZOJ4521][Cqoi2016]手机号码 (数位dp)
题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...
- [Bzoj4521][Cqoi2016]手机号码(数位dp)
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 870 Solved: 505[Submit][Status ...
- [bzoj4521][Cqoi2016][手机号码] (数位dp+记忆化搜索)
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
- 【bzoj4513】储能表【数位DP】
本来是想去学数位DP,作死挑了这道题,爆炸... 听说正确姿势应该是去做bzoj4521[手机],听说迪克们当场都A了,Orz 然后对于4513,我只想说,一.脸.懵.逼 首先,我是无论如何都无法想到 ...
随机推荐
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- jquery的一点点认识
概述 JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 .它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, O ...
- open-source Julius speech-recognition engine
http://julius.osdn.jp/en_index.php?q=index-en.html Open-Source Large Vocabulary CSR Engine Julius ht ...
- vs学习过程中遇见的各种问题
1. argument to type "char *"is incompatible with parameter of type "LPWSTR" 解决: ...
- kubernetes之初始容器(init container)
系列目录 理解初始容器 一个pod里可以运行多个容器,它也可以运行一个或者多个初始容器,初始容器先于应用容器运行,除了以下两点外,初始容器和普通容器没有什么两样: 它们总是run to complet ...
- kubectl技巧之查看资源列表,资源版本和资源schema配置
系列目录 在kubernetes里,pod,service,rs,rc,deploy,resource等对象都需要使用yaml文件来创建,很多时候我们都是参照照官方示例或者一些第三方示例来编写yaml ...
- Jquery 插件 实例
先说明下应用场景,通过可配项的配置和默认项覆盖,获取指定的需求数据,填充到指定的位置(两个指定其实都是可配的) (function($) { $.fn.extend({ getOneNews: fun ...
- caffe2--ubuntu16.04--14.04--install
Install Welcome to Caffe2! Get started with deep learning today by following the step by step guide ...
- adb tcp 调试
su setprop service.adb.tcp.port 5555 stop adbd start adbd
- Nexus 5更新 Android5.0 失败解决方法
Android 5.0最终推出了正式版,今天也及时刷到了Android5.0 (LRX21O),官方链接:https://developers.google.com/android/nexus/ima ...