随笔分类 - 数位dp
摘要:/* 特殊处理FFFFFFFF +1的会变成00000000的情况,因为只会变一次,所以判断一下m+n>0xFFFFFFFF就行了 然后问题就简化为了计算00000000-n之间0-f出现的次数,因为算前导0,那么从高位向低位按位枚举就行了*/#include using namespace std; typedef long long ll; const ll INF=0xFFFFFFFF...
阅读全文
摘要:这个题有很多的姿势,准备pat考试的时候再次遇到这个题目,数位相关的题目都是划分区间,然后进行统计 因为需要统计0,从高位向地位划分的时候会受到前导0的干扰,想起以前从低位开始划分的方法,简单的介绍下 比如1234,将区间划分为0-1230 1231-1234,两个区间,第二个区间显然很好求,为了递
阅读全文
摘要:题意:给定两个十进制数x,y(y>=x&&y<=1e15),求转化为k进制后(2<=k<=10),区间数按位求和 分析:看的高逸涵的论文,思路无外乎就是根据1到K^x-1之间0-(k-1)所有数字出现的次数相同,以此快速求解,然后划分区间,合并答案 想了解可以自己看一下论文,很详细 1 #inclu
阅读全文
摘要:题意:统计区间内t=B^n+.....+B^0,每项系数都为0或1,统计1的个数恰好为1的情况,这样的数有多少个 分析:看的刘聪的论文,分析很好,http://pan.baidu.com/s/1pL4FF4n,转化为统计二叉树上1的个数代码写的有点糙 1 #include<bits/stdc++.h
阅读全文
摘要:题意:区间内有多少任意两位差不小于2的 分析:任意两位差不小于2,那么要记录上一位选的是什么,还要注意上一位如果是前缀0的情况,再加一个标记,还要记录前面是否达到上限,然后就ok了 1 #include<bits/stdc++.h> 2 using namespace std; 3 const in
阅读全文
摘要:题意:求区间内不包含4和连续62的数的个数 分析:从高位向低位枚举,4的话,直接不枚举就行了,62用一个标志来记录上一个数是否是6,还要加一个表示上面是否达到上限,没有就可以枚举到9,否则枚举到liimt[len] 入门题,这个模型以后会经常用到 1 #include<bits/stdc++.h>
阅读全文

浙公网安备 33010602011771号