【BZOJ-4521】手机号码 数位DP
4521: [Cqoi2016]手机号码
Time Limit: 10 Sec Memory Limit: 512 MB
Submit:
303 Solved: 194
[Submit][Status][Discuss]
Description
Input
Output
输出文件内容只有一行,为1个整数,表示满足条件的手机号数量。
Sample Input
Sample Output
样例解释
满足条件的号码: 12121285000、
12121285111、 12121285222、 12121285333、 12121285550
HINT
Source
Solution
这种数据范围,一眼数位DP,但是不是特别的好搞...
F[i][j][0/1][0/1][0/1][0/1][0/1]表示位数为i,最高位为j,最高位连续两个是否是相同的,是否有连续3个相同的,是否有4,是否有8,前缀和原数前缀的大小关系
枚举这些东西....k1,k2,k3,k4,k5分别表示对应上述0/1
注意&启发:
1.数位DP一般采取预处理,后求和,这里数据范围直接处理非常方便,采用直接处理
2.注意范围$L<=10^{10}$默认10位做的话,不能直接计算Calc(R)-Calc(L-1),这里可以采取讨论,或者处理区间为开区间,计算Calc(R+1)-Calc(L)即可
3.注意状态的枚举,一些零碎的判断需要理清,否则会陷入泥潭(WA了无数,不知所措)
4.如果digit[]正序做更方便可以考虑正序处理,外加此题可以采取特殊的枚举方式
5.更深层次的了解了数位DP,但仍需更多的练习,总体来说,此题是个不错的题目,自己能想到的只是框架,实现仍有些差池
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long F[][][][][][][],l,r;
int p[],num;
long long cal(long long x)
{
memset(F,,sizeof(F));
long long ans=; int len=,digit[],a,b,c,d,e;
while(x){digit[++len]=x%; x/=;}
reverse(digit+,digit+len+);
F[][][][][][][]=;
for (int i=; i<=len-; i++)
for (int j=; j<=; j++)
for (int k1=; k1<=; k1++)
for (int k2=; k2<=; k2++)
for (int k3=; k3<=; k3++)
for (int k4=; k4<=; k4++)
for (int k5=; k5<=; k5++)
if (F[i][j][k1][k2][k3][k4])
for (int k=; k<=; k++)
{
if (k5 && (k>digit[i+])) continue;
if (k==j) a=; else a=;
if (k2==) b=(k1+a)==; else b=k2;
if (k3==) c=(k==); else c=k3;
if (k4==) d=(k==); else d=k4;
if ((c+d)==) continue;
if (k5 && (k==digit[i+])) e=; else e=;
F[i+][k][a][b][c][d][e]+=F[i][j][k1][k2][k3][k4][k5];
}
for (int i=; i<=; i++)
for (int k1=; k1<=; k1++)
for (int k3=; k3<=; k3++)
for (int k4=; (k4<=)&&(k4+k3<); k4++)
ans+=F[len][i][k1][][k3][k4][];
return ans;
}
int main()
{
scanf("%lld%lld",&l,&r);
printf("%lld\n",cal(r+)-cal(l));
return ;
}
昨晚写了道数(S)位(W)DP,结果第二天期中数学(S)物理(W)血崩...虽然1个多月的课,就上了1/4不到...但心里不爽啊o_O
【BZOJ-4521】手机号码 数位DP的更多相关文章
- BZOJ 4521 CQOI 2016 手机号码 数位DP
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 539 Solved: 325[Submit][Status ...
- bzoj 4521 [ Cqoi 2016 ] 手机号码 —— 数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4521 数位DP,记录好多维状态: 写了半天,复杂得写不下去了,于是参考一下TJ... 练习简 ...
- BZOJ 4521 [CQOI2016]手机号码 - 数位DP
Description 在$[L, R]$找出有几个数满足两个条件 : 1 : 不同时含有$4$ 和 $8$ 2 : 至少有$3$个相邻的数相同 Solution 非常容易的数位DP, $pos$ 为 ...
- [BZOJ4521][CQOI2016]手机号码(数位DP)
4521: [Cqoi2016]手机号码 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 875 Solved: 507[Submit][Status ...
- [CQOI2016]手机号码 数位DP
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
- [Luogu P4124] [CQOI2016]手机号码 (数位DP)
题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态 ...
- BZOJ 4521 手机号码
SB数位dp. 我的貌似要特判9999999999的情况. #include<iostream> #include<cstdio> #include<cstring> ...
- BZOJ 3329: Xorequ [数位DP 矩阵乘法]
3329: Xorequ 题意:\(\le n \le 10^18\)和\(\le 2^n\)中满足\(x\oplus 3x = 2x\)的解的个数,第二问模1e9+7 \(x\oplus 2x = ...
- BZOJ.3329.Xorequ(数位DP)
题目链接 x^3x=2x -> x^2x=3x 因为a^b+((a&b)<<1)=a+b,x^2x=x+2x,所以x和2x的二进制表示中不存在相邻的1. (或者,因为x+2x ...
随机推荐
- DataReader用法
一.DataReader含义 DataReader相比于DataSet,DataReader是一个抽象类,所以不能用DataReader DR = new DataReader(),来构造函数创建对象 ...
- ios开发--多台电脑共用一个开发证书的方法
Xcode5 以前的操作步骤是: idp证书如何给另一台机子使用 先在原电脑上用Xcode->Windows->Organizer, 再点击Developer profile, 在其最下面 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
- 金山快盘+TortoiseSVN构建版本控制仓库
金山会盘+TortoiseSVN构建版本控制仓库 之前写过一篇文章介绍 如何利用花生壳和VisualSVN Server建立远程代码仓库,具体请参照: <如何利用花生壳和VisualSVN Se ...
- CodeSmith操作Access时字段的排序问题
最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致. 首先在ACCESS数据库中建一个测试表Test,并添加ID.Na ...
- FineUI小技巧(1)简单的购物车页面
起因 最初是一位 FineUI 网友对购物车功能的需求,需要根据产品单价和数量来计算所有选中商品的总价. 这个逻辑最好在前台使用JavaScript实现,如果把这个逻辑移动到后台C#实现,则会导致过多 ...
- Http概述(一)
Http使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,也能够确保数据在传输过程中不会被损坏或产生混乱. 这样用户在访问信息时就不用担心其完整性了. web服务端与服务器是如何通信的 Web ...
- lecture7-序列模型及递归神经网络RNN
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- [BZOJ3156]防御准备(斜率优化DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3156 分析: 简单的斜率优化DP
- 关于iphone 6 ios8网站背景图片错乱的问题解决办法
最近公司有个客户的网站用手机safari打开出现背景图片错乱,本来应该显示A图片的却显示B图片,网速越慢的情况下越容易出现这种问题,悲催的是这种情况只在iPhone 6上出现,并且不是一直这样,多刷新 ...