16进制下的数位dp,由于固定了位数,可以出现前导零,反而简化了问题,和十进制异曲同工,只需要注意边界,对于[l,r],如果r>max,则分成[l,max-1]+max+[0,r-max-1],这是因为对于cal(N,x)函数来说计算的是[0,N)之间x的出现次数,并不包括N,如果只是简单的把max+1传进去的话就不是八位数了,这
样乱改函数的话更麻烦还不如直接把max抽出来计算方便。
    

 #include<bits/stdc++.h>
using namespace std;
#define LL long long
LL c[]={,,,,,,,,
,,,,,,,};
LL f[]={,};
LL p16[]={};
LL bit[];
void init(){
for(LL i=;i<=;++i) p16[i]=p16[i-]*;
for(LL i=;i<=;++i) f[i]=f[i-]*+p16[i-];
}
LL cal(LL N,LL x){
LL len=,ans=,tot=;
while(N){
bit[len++]=N%;
N/=;
}
while(len<) bit[len++]=;
bit[len]=-;
for(LL i=len-;i>=;--i){
ans+=f[i]*bit[i];
if(bit[i]>x) ans+=p16[i];
ans+=tot*bit[i]*p16[i];
if(bit[i]==x) tot++;
}
return ans;
}
LL to10(char *s){
LL ans=,len=strlen(s);
for(int i=;i<len;++i){
LL tmp=isdigit(s[i])?s[i]-'':(s[i]-'A'+);
ans=ans*+tmp;
}
return ans;
}
int main(){init();
char s[];
LL l,r,t,n,i,j,k;
LL MAX=to10("FFFFFFFF");
scanf("%lld",&t);
while(t--){
scanf("%lld",&k);
scanf("%s",s);
LL l=to10(s);
LL r=l+k-;
LL ans=; if(r<=MAX){
for(i=;i<=;++i) ans+=c[i]*(cal(r+,i)-cal(l,i));
}
else{
for(i=;i<=;++i) if(MAX>=l)ans+=c[i]*(cal(MAX,i)-cal(l,i));
ans+=c[]*;
for(i=;i<=;++i) ans+=c[i]*cal(r-MAX,i);
}
printf("%lld\n",ans);
}
return ;
}
/*
10
5 89ABCDEF
3 FFFFFFFF
7 00000000
*/

ZOJ-3962-数位dp的更多相关文章

  1. ZOJ 3962 Seven Segment Display(数位DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3962 题目大意: 有t组数据. 给你一个n,和8位的十六进制数s ...

  2. ZOJ 3962 Seven Segment Display(数位DP)题解

    题意:给一个16进制8位数,给定每个数字的贡献,问你贡献和. 思路:数位DP,想了很久用什么表示状态,看题解说用和就行,其他的都算是比较正常的数位DP. 代码: #include<iostrea ...

  3. ZOJ 3962 E.Seven Segment Display / The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple E.数位dp

    Seven Segment Display Time Limit: 1 Second      Memory Limit: 65536 KB A seven segment display, or s ...

  4. ZOJ - 3962 - Seven Segment Display-17省赛-数位DP

    传送门:Seven Segment Display 题意:求一个给定区间每个数字的消耗值的和: 思路:数位DP,有点区间和的思想,还有就是这个十六进制,可以用%llx读,还是比较难的: 还有就是到最大 ...

  5. ZOJ 3494 BCD Code(AC自动机+数位DP)

    BCD Code Time Limit: 5 Seconds      Memory Limit: 65536 KB Binary-coded decimal (BCD) is an encoding ...

  6. ZOJ 3494 (AC自动机+高精度数位DP)

    题目链接:  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3494 题目大意:给定一些被禁止的BCD码.问指定范围内不含有 ...

  7. ZOJ 2599 Graduated Lexicographical Ordering (数位DP)

    首先要吐两行槽:看到集训队论文上有这道题,由于数位DP一律写成记忆化搜索形式的强迫症,就没去看论文上的几个函数是什么……:结果被这道题虐的脑细胞死光……,最后是用随机数据对拍AC程序然后发现BUG改掉 ...

  8. ZOJ 2599 Graduated Lexicographical Ordering ★(数位DP)

    题意 定义两个数的比较方法,各位数字之和大的数大,如果数字和相等则按字典序比较两个数的大小.输入n,k,求:1.数字k的排名:2.排名为k的数. 思路 算是一类经典的统计问题的拓展吧~ 先来看第一问. ...

  9. ZOJ 3494 BCD Code (AC自己主动机 + 数位DP)

    题目链接:BCD Code 解析:n个病毒串.问给定区间上有多少个转换成BCD码后不包括病毒串的数. 很奇妙的题目. . 经典的 AC自己主动机 + 数位DP 的题目. 首先使用AC自己主动机,得到b ...

  10. BCD Code ZOJ - 3494 AC自动机+数位DP

    题意: 问A到B之间的所有整数,转换成BCD Code后, 有多少个不包含属于给定病毒串集合的子串,A,B <=10^200,病毒串总长度<= 2000. BCD码这个在数字电路课上讲了, ...

随机推荐

  1. C# WebBrowser的8个方法、13个属性和事件

    1.方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项  GoHome 相当于IE的“主页”按 ...

  2. sqlserver如何读写操作windows系统的文件

    DECLARE   @object   int     DECLARE   @hr   int     DECLARE   @src   varchar(255),   @desc   varchar ...

  3. android 导出数据库文件

    1.打开dos窗口,进入自己SDK路径下,再进入platform-tools下边 2.进入shell模式: adb shell 3.获取所有root权限: su root 4.打开需要导出的数据库文件 ...

  4. mysql 数据操作 单表查询 limit 限制查询的记录数

    mysql; +----+-----------+------+-----+------------+---------+--------------+------------+--------+-- ...

  5. onvif协议client与server对接

    happytimesoft有完整的c语言开发的onvif client和server,一共1000$,真便宜,haha. http://www.happytimesoft.com/products/m ...

  6. HDU1575:Tr A(矩阵快速幂模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1575   #include <iostream> #include <string.h> ...

  7. POJ1144:Network(无向连通图求割点)

    题目:http://poj.org/problem?id=1144 求割点.判断一个点是否是割点有两种判断情况: 如果u为割点,当且仅当满足下面的1条 1.如果u为树根,那么u必须有多于1棵子树 2. ...

  8. PAT 1110 Complete Binary Tree[判断完全二叉树]

    1110 Complete Binary Tree(25 分) Given a tree, you are supposed to tell if it is a complete binary tr ...

  9. tp基础补充

    ThinkPHP php框架 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分 ...

  10. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...