【BZOJ4521】【CQOI2016】手机号码
感觉数位dp好恶心……
原题:
f[i][1][k][q][flag][1]+=(q<a[i])*f[i-1][0][j][k][p][1]+f[i-1][1][j][k][p][1];
f[i][1][k][q][flag][mark]+=(q<a[i])*f[i-1][0][j][k][p][0]+f[i-1][1][j][k][p][0];
恩再多我也解释不了了,只能意会
全程抄代码,感觉只是勉强理解了这题,并不能自己写出来
注意l=1e10的情况,减一下就不是11位了
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long long
ll n,m;
int a[];
ll f[][][][][][];
int QAQ(int x,int y){ return ((x==)<<)|(x==)|((y==)<<)|(y==);}
ll play(ll x){
memset(f,,sizeof(f));
for(int i=;i>=;--i) a[i]=x%,x/=;
int flg=QAQ(a[],a[]),mk=;
f[][][a[]][a[]][flg][]=;
for(int i=;i<=a[];++i)for(int j=;j<=;++j){
if(i==a[] && j>=a[]) continue;
f[][][i][j][QAQ(i,j)][]=;
}
for(int i=;i<=;++i){
flg|=QAQ(a[i],a[i]),mk|=(a[i]==a[i-] && a[i]==a[i-]);
if(flg!=) f[i][][a[i-]][a[i]][flg][mk]=;
for(int j=;j<=;++j)for(int k=;k<=;++k)for(int p=;p<=;++p)for(int q=;q<=;++q){
int flg1=p|QAQ(q,q),flg2=(q==k && k==j);
if(flg1==) continue;
f[i][][k][q][flg1][]+=(q<a[i])*f[i-][][j][k][p][]+f[i-][][j][k][p][];
f[i][][k][q][flg1][flg2]+=(q<a[i])*f[i-][][j][k][p][]+f[i-][][j][k][p][];
}
}
ll bwl=;
for(int i=;i<=;++i)for(int j=;j<=;++j)for(int p=;p<=;++p)for(int q=;q<=;++q)
bwl+=f[][q][i][j][p][];
return bwl;
}
int main(){//freopen("ddd.in","r",stdin);
cin>>n>>m;
if(n==10000000000LL){ cout<<play(m)<<endl; return ;}
cout<<play(m)-play(n-)<<endl;
return ;
}
【BZOJ4521】【CQOI2016】手机号码的更多相关文章
- [BZOJ4521][CQOI2016]手机号码(数位DP)
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 875 Solved: 507[Submit][Status ...
- [Bzoj4521][Cqoi2016]手机号码(数位dp)
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 870 Solved: 505[Submit][Status ...
- BZOJ4521: [Cqoi2016]手机号码
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
- BZOJ4521 Cqoi2016 手机号码 【数位DP】
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出 ...
- [BZOJ4521][Cqoi2016]手机号码 (数位dp)
题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...
- [bzoj4521][Cqoi2016][手机号码] (数位dp+记忆化搜索)
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
- 【BZOJ-4521】手机号码 数位DP
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 303 Solved: 194[Submit][Status ...
- 4521: [Cqoi2016]手机号码
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1030 Solved: 609 [Submit][Statu ...
- [CQOI2016]手机号码 数位DP
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
- P4124 [CQOI2016]手机号码
P4124 [CQOI2016]手机号码 题解 数位DP DFS 虽然套路,但还是恶心到找不到锅在哪里 注意这个 然后你就发现其实这样就不用记录前导0了 锅在这个鬼地方QAQ 代码 #inclu ...
随机推荐
- Java工厂方法模式
工厂方法模式: /** * 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口, * 而子类工厂负责创建具体的产品对象. * 目的:是为了把产品的实例化操作延迟到子 ...
- python全栈开发笔记---基本数据类型--数字型魔法
数字 int a1 =123 a2=456 int 讲字符串转换为数字 a = " #字符串 b = int(a) #将字符串转换成整形 b = b + 1000 #只有整形的时候才可以进 ...
- day29 socketsever ftp功能简单讲解
今日所学 一.ftp上传简单实例 二.socketsever的固定用法 三.验证合法性连接 1.ftp上传实例 这个题目是我们现在网络编程比较基础一点的题目 下面我们只写简单上传的代码 上传服务端的代 ...
- bootstrap学习参考网站
----https://www. evget .com /article /
- 如何在Ubuntu中安装中文输入法
在使用ubuntu系统时,有的时候总觉得英文输入法不方便操作,总希望能有中文输入法可以辅助操作,那怎样才能在ubuntu中安装中文输入法呢?下面有一种简单的方法可以安装中文输入法. 如何在ubuntu ...
- [Leetcode 135]糖果分配 Candy
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- SQL-6查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序
题目描述 查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序CREATE TABLE `employees` (`emp_no` int(11) NOT N ...
- 多War包合并,jetty测试
模块间的相互依赖引用配置在pom.xml中加入要依赖的模块即可<dependency> <groupId>com.exayong</groupId> & ...
- <Spark><Programming><Loading and Saving Your Data>
Motivation Spark是基于Hadoop可用的生态系统构建的,因此Spark可以通过Hadoop MapReduce的InputFormat和OutputFormat接口存取数据. Spar ...
- day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
# 多态的理解:# Python 天生自带多态# 鸭子类型 list 和 tuple 就是一对鸭子类型 很像但是没有继承关系## 而其他的类型 上传参数或者打印参数的时候 必须是指定的数据类型# -- ...