数位dp
ramay7
Life is not short,but float.
展开
-
HDU 2089 不要62 【数位DP】
Problem Description杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。但是,61152虽然含有原创 2015-12-12 14:45:09 · 343 阅读 · 0 评论 -
SGU 390 Tickets(数位dp,较难)
题目链接SGU 390 Tickets题意有一位售票员给乘客售票。对于每位乘客,他会卖出多张连续的票,直到已卖出的票的 编号的数位之和不小于给定的正数kk。然后他会按照相同的规则给下一位乘客售票。初始时, 售票员持有的票的编号是从 LL到 RR的连续整数。请你求出,售票员可以售票给多少位乘客。数据规模:1≤L≤R≤1018,1≤k≤10001 ≤ L ≤ R ≤ 10^{18},1 ≤ k ≤ 10原创 2016-09-02 23:30:31 · 836 阅读 · 0 评论 -
BZOJ 1026 windy数(数位dp,相邻两位数字之差不小于2)
题目链接BZOJ 1026 windy数题意求区间[L,R][L,R]中相邻两位数字之差不小于2的数字个数。 数据范围:1≤L≤R≤2∗1091\leq L\leq R\leq 2*10^{9}分析其实挺简单的。前导0判断,然后记录前一位数字,循环时判断。再加上记忆化就好了。Code#include <stdio.h>#include <string.h>#include <algorithm原创 2016-09-02 18:22:58 · 896 阅读 · 0 评论 -
URAL 1057 Amount of Degrees(数位dp)
题目链接URAL 1057 Amount of Degrees题意求区间[L,R][L,R]恰好可以用KK个不相同的BB的幂次相加得到的数字的个数。 例如:L=15,R=20,K=B=2 17=24+2017 = 2^4+2^0 18=24+2118 = 2^4+2^1, 20=24+2220 = 2^4+2^2 一共有3个。数据范围:1≤L≤R≤231−1,1≤K≤20,2≤B≤10原创 2016-09-02 18:17:17 · 527 阅读 · 0 评论 -
POJ 2282 The Counting Problem & POJ 3286 How many 0's?(按位计算贡献)
题目链接POJ 2282 The Counting Problem题意统计区间L和R之间,0-9每个数字出现的次数。例如对于19和21之间,数字为19,20,21,其中0和9都出现了1次,1和2都出现了两次,其余数字都没有出现,也就是0次。 数据范围:1<L,R<1091<L,R<10^{9}分析题目中没有说明L,RL,R的大小关系,所以读入时需要判断下。 我是按位考虑的,计算每一位上每个数字出原创 2016-09-02 17:41:16 · 446 阅读 · 0 评论 -
SPOJ Balanced Numbers(数位dp,三进制状压)
题目链接SPOJ Balanced Numbers题意定义一个数如果满足所有位上偶数数字出现奇数次,奇数数字出现偶数次那么就称为Balanced Number。给一个区间[L,R][L,R],求Balanced Number的数量。 数据范围:1≤L≤R≤10191\leq L\leq R \leq 10^{19}分析根据数据范围,推荐使用unsigned long long+cin/cout。原创 2016-09-02 17:31:12 · 490 阅读 · 0 评论 -
HDU 4507 吉哥系列故事——恨7不成妻(数位dp,较难)
题目链接HDU 4507 吉哥系列故事——恨7不成妻题意定义和7有关的数字是满足下列条件之一的数字:整数中某一位是7;整数的每一位加起来的和是7的整数倍;这个整数是7的整数倍;给一个区间[L,R][L,R],求区间内所有和7无关的数字的平方和。对1e9+7取模。 数据范围:1≤L≤R≤10181\leq L\leq R\leq 10^{18}分析这个题目比较难了。。。我觉得。 无论是求和原创 2016-09-02 17:13:27 · 538 阅读 · 0 评论 -
HDU 4734 F(x)(数位dp)
题目链接HDU 4734 F(x)题意对于一个nn位的数字xx,从高到低依次为AnAn−1...A1A_{n}A_{n-1}...A_{1}。定义:f(x)=An∗2n+An−1∗2n−1+⋯+A1∗2f(x)=A_{n}*2^{n}+A_{n-1}*2^{n-1}+\cdots +A_{1}*2。给两个数字A,BA,B,求区间[0,B][0,B]内f(x)≤f(A)f(x)\leq f(A)的数字原创 2016-09-02 16:42:18 · 581 阅读 · 0 评论 -
HDU 3652 B-Number(数位dp)
题目链接:HDU 3652 B-Number题意求[1,n][1,n]中含有子串“13”并且能被13整除的数字个数。 数据范围:1≤n 1091\leq n\ 10^{9}分析记录高位模13的余数,和前一位数字,以及高位是否出现子串“13”即可。Code#include <stdio.h>#include <string.h>#include <math.h>#include <algori原创 2016-09-02 16:29:23 · 438 阅读 · 0 评论 -
HDU 3709 Balanced Number(数位dp)
题目链接:HDU 3709 Balanced Number题意:如果一个数字以某一位为平衡点左右力矩相等,则称该数字为Balanced Number。求区间[L,R][L,R]中Balanced Number的数量。 数据范围:0≤L≤R≤10180\leq L\leq R\leq 10^{18}分析枚举平衡点并记录平衡点左右力矩之差为sumsum,这样子才能记忆化。还要注意0的情况。Code#i原创 2016-09-02 16:24:12 · 383 阅读 · 0 评论 -
HDU 4352 数位dp
求区间内最大上升子序列为k的数字个数。 题目链接HDU 4352 XHXJ’s LIS题意把一个数字从左到右(从高位到低位)看成一个序列,求区间[L,R][L,R]内序列的最大上升子序列长度为KK的数字个数。数据范围:0<L≤R<263−1,1≤K≤100< L\leq R < 2^{63} - 1,1\leq K\leq 10分析把高位数字状压成最多是111111111(9个1)的二进制数,然原创 2016-09-02 16:16:15 · 592 阅读 · 0 评论 -
HDU 3709 Balanced Number(数位dp)
题目链接: HDU 3709 Balanced Number 题意: 把一个数字都某一位看成一个支点,左右的权值和是各个位上的数字到支点的距离乘积之和。如果存在某个支点使得左右权值和相等,这个数字就称为Balanced Number。给定区间[L,R][L,R],求Balanced Number的数字个数。 数据范围:0≤L≤R≤10180\leq L\leq R \leq 10^{18}原创 2016-08-31 00:52:26 · 453 阅读 · 0 评论 -
2014 GCJ Round 1B New Lottery Game(数位dp,x小于等于A,y小于等于B,并且x&y值小于等于K的数字个数)
题目链接: 2014 GCJ Round 1B New Lottery Game 题意: 求x≤A,y≤Bx\leq A,y\leq B,并且xx&yy值小于等于KK的数字个数。 数据范围:A,B,K≤109A,B,K\leq 10^9 分析: 官方题解在这里:Here。通篇读下来很有意思,对于理解数位dp很有帮助。一般的数位dp我们在dfs的时候只记录一个limitlimit表示是否达原创 2016-08-31 00:41:20 · 606 阅读 · 0 评论 -
POJ 3252 Round Numbers(数位dp,区间中二进制表示时0的个数大于等于1的个数的数字的个数)
题目链接: POJ 3252 Round Numbers 题意: 给一个区间[a,b][a,b]求区间中二进制表示时0的个数大于等于1的个数的数字的个数。 数据范围:a≤b≤2∗109a\leq b\leq 2*10^{9} 分析: 数位dp。 做区间减法后,将区间上限表示成二进制形式,dfs处理。记录下当前已有0和1的个数即可。注意剪枝。#include <stdio.h>#inc原创 2016-08-31 00:26:00 · 672 阅读 · 0 评论 -
BZOJ 1799 self 同类分布(数位dp,区间各位数字和能整除原数的数字个数)
题目链接: BZOJ 1799 self 同类分布 题意: 给出aa,bb,求出[a,b][a,b]中各位数字之和能整除原数的数的个数。 数据范围:a≤b≤1018a\leq b\leq 10^{18} 分析: 暴力枚举所有可能的数字和即可。 需要判断余数等于0并且所有数字和等于设定的sum。#include <stdio.h>#include <string.h>#include原创 2016-08-31 00:16:22 · 1233 阅读 · 0 评论 -
Codeforces 55D Beautiful Numbers(数位dp,能被自己各个位上数字整除的数字个数)
题目链接: Codeforces 55D Beautiful Numbers 题意: 定义:一个数如果能够被它所有位上非零数字整除那么这个数就是Beautiful Numbers。 给一个区间[L,R][L,R],求这个区间Beautiful Numbers的个数。 数据范围:1≤L≤R≤9∗10181\leq L\leq R\leq 9*10^{18} 分析: 这道题清新脱俗啊~原创 2016-08-29 18:48:03 · 1453 阅读 · 0 评论 -
HDU 3555 Bomb(1-n含有“49”的数字个数)
题目链接: HDU 3555 Bomb 题意: 求1到n中含有“49”序列的数字的个数。491,149都是含有“49”序列但是“419”不是的。 数据范围:n\leq 2^{63} -1 分析: 数位dp。差不多也是模版题了。 从高位到低位dfs记录前一位数字,并且记录当前是否已出现“49”序列,最后判断下状态,记忆化搜索。#include <stdio.h>#include <st原创 2016-08-29 18:08:39 · 866 阅读 · 0 评论 -
UVALive 3675 Sorted bit sequence(数位dp+二分)
题目链接UVALive 3675 Sorted bit sequence题意将区间[L,R][L,R]内的所有整数按照其二进制表示中1 的数量从小到大排序。如果 1 的数量 相同,则按照数的大小排序。求这个序列中的第KK个数。其中,负数使用补码来表示:一个负数的二进制表示与其相反数的二进制之和恰好等于2322^{32}。 数据规模:L×R≥0,−231≤L≤R≤231−1,1≤K≤min(R−L+原创 2016-09-02 23:50:57 · 703 阅读 · 0 评论