1057. Amount of Degrees Time limit: 1.0 second Memory limit: 64 MB Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactlyK different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By this exampl…
题目链接 我看错题了...都是泪啊,不存在3*4^2这种情况...系数必须为1... #include <cstdio> #include <cstring> #include <iostream> #include <vector> using namespace std; #define LL long long ]; LL dp[][]; int k,b; LL dfs(int pos,int pre,int bound) { int i,end; L…
1057. Amount of Degrees Time limit: 1.0 second Memory limit: 64 MB Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactlyK different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By this exampl…
题目大意 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和.例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 输入:第一行包含两个整数X和Y.接下来两行包含整数K和B. 输出:只包含一个整数,表示满足条件的数的个数. 数据规模:1 ≤ X ≤ Y ≤ 2^31−1,1 ≤ K ≤ 20,  2 ≤ B ≤ 10. 题解 <浅谈数位类统计问题>的论问题~~~~~人生第一道数位DP,哈哈~~~O(∩_∩)O~~代码纯属抄袭~~~~…
Discription Create a code to determine the amount of integers, lying in the set [X; Y] and being a sum of exactly K different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By this example 3 numbers are the sum of exactly two integer degree…
Description 问[L,R]中有多少能表示k个b次幂之和. Sol 数位DP. 当2进制时. 建出一个二叉树, \(f[i][j]\) 表示长度为 \(i\) 有 \(j\) 个1的个数. 递推式就是左右子树之和 \(f[i][j]=f[i-1][j-1]+f[i-1][j]\) 将b进制变成2进制来做. 因为发现系数只能是1,所以找到一个b进制下极大的2进制就行..我觉得我好像讲不明白.. 我计算的是小于 x 满足条件的...我觉得这样比较好写,也不用特判最后的情况.. 复杂度 \(O…
Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactly K different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By this example 3 numbers are the sum of exactly two integer degrees of number 2…
题意:求(x--y)区间转化为 c 进制 1 的个数为 k 的数的出现次数. 分析:发现其满足区间减法,所以能够求直接求0---x 的转化为 c 进制中 1 的个数为k的数的出现次数. 首先用一个数组f[i][j]:表示前 i 位中有 j 位为 1 的个数. 能够通过方程 f[i][j] = f[i-1][j] + f[i-1][j-1]来预处理出来. 对于要求的答案,我们能够借助树来求. 假如13 .2进制,有3个1 .转化为2进制 1101 能够借助于一个二进制的表示的树来求. AC代码:…
题意: 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的,B的整数次幂之和.例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足了要求:  17 = 24+20, 18 = 24+21, 20 = 24+22.(以B为底数,幂次数不允许相同) 参考论文-->>论文中的题. 思路: 论文倒是容易看明白,但是这个转成B进制的思想一直转不过来.其实转成B进制后变成 a1*Bn+a2*Bn-1...an*B0.其中ai是系数.范围是[0,B-1].但是看了论文…
link:http://acm.timus.ru/problem.aspx?space=1&num=1057 论文: 浅谈数位类统计问题  刘聪 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #inc…
题目传送门http://acm.timus.ru/problem.aspx?space=1&num=1057 最近在学习数位dp,具体姿势可以参照这篇论文:http://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html?re=view #include <cstdio> #include <iostream> #include <cstring> using namespace std; const int m…
 数位DP总结 By Wine93 2013.7 1.学习链接 [数位DP] Step by Step   http://blog.csdn.net/dslovemz/article/details/8540340 [总结] 数位统计模板 http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html 2.各人总结领悟 数位DP关键在于状态的设计,设计状态时要考虑当前状态(如dp[pos][s1][s2]),一旦当前状态确定后,pos后…
题目链接: (请自行百度进Ural然后查看题号为1057的那道题目囧~) 题目大意: Create a code to determine the amount of integers, lying in the set \([X;Y]\) and being a sum of exactly \(K\) different integer degrees of B. Example. Let \(X=15, Y=20, K=2, B=2\) . By this example 3 number…
数位DP 2009年刘聪<浅谈数位类统计问题> 例题一 从组合数 以及 数位DP的角度都可以做…… 首先转化成求1~n内K进制下只有0.1的数的个数: 考虑K进制下第一个为1的位,剩下的数位中0和1随便放……也就是算组合数了. 然后区间相减…… 写的好乱……还是去看论文吧 //Ural 1057 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #inc…
传送门 Amount of Degrees Time limit: 1.0 secondMemory limit: 64 MB Description Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactly K different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By t…
描述 求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和. 例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 17 = 24+20, 18 = 24+21, 20 = 24+22. 输入 第一行包含两个整数X和Y.接下来两行包含整数K和B. 输出 只包含一个整数,表示满足条件的数的个数. 样例输入 15 20 2 2 样例输出 3 提示 数据规模:1 ≤ X ≤ Y ≤ 2^31−1,1 ≤ K ≤ 20, 2 ≤ B ≤ 10…
发现自己以前对数位DP其实一窍不通... 这题可以做一个很简单的转换:一个数如果在$b$进制下是一个01串,且1的个数恰好有k个,那么这个数就是合法的(刚开始没判断必定是01串,只判断了1的个数竟然有60pts,数据可真的水~) 这个结论显然成立,也不需要什么证明啦qaq~ 然后数位DP就好了 转化为b进制后要么插1要么插0,$dp[x][cnt]$表示当前处理到第i为,已经有cnt个1的情况下 转移方程: $$dp[x][cnt]=\sum dp[x-1][cnt+1](当前位为1)$$ $$…
废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB提交数: 130     通过数: 68 [题目描述] 原题来自:NEERC 2000 Central Subregional,题面详见 Ural 1057. 求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和.例如,设 X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 1…
1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 题目描述 原题来自:NEERC 2000 Central Subregional,题面详见 Ural 1057. 求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和.例如,设 X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意: 17=2^4+2^0 18=2^4+2^1 20=2^4+2^2 输入…
[TimusOJ1057]Amount of Degrees 试题描述 Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactly K different integer degrees of B. Example. Let X=15, Y=20, K=2, B=2. By this example 3 numbers are the sum of exa…
1057 简单的数位DP  刚开始全以2进制来算的 后来发现要找最接近x,y值的那个基于b进制的0,1组合 #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<cmath> using namespace std; #define LL __int64 #define INF 1e1…
数位dp题,关键是用树的思维去考虑. 对于一个数字X,要是能表示成K个B的不同次幂,等价于X在B进制下有且只有K个位上面的数字为一,其他位上的数字都为0. 具体读者可以去参考,国家集训队李聪的论文,里面的介绍都很详细. #include<stdio.h> #include<string.h> #define LL long long LL c[60][60]; int K,b,a[40]; void init()//预处理组合数 { int i,j; for(i=0;i<40…
第一题:Amount of degrees (ural 1057) 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057 题意:[x,y]范围内的数,可以拆分成k个b进制的不同幂的和 的数字有多少. 我们可以将x转换成二进制来讨论.二进制转化时,找到第一个非0非1的数,将其及其后面的数都变为1. 那么问题就变成了求[0,x]范围内,二进制表示中含有k个1的数字有多少个. 求[x,y]区间相减.我们可以给数建立0,1的表示树. 在求高度为i的…
时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数位dp 的介绍 数位 dp 其实就是让你处理出某一区间范围内满足条件的数的个数,但是一般这个区间范围都是令人绝望的大...比如 1e9 都算良心了,常规的都是 1e18 甚至是 1e10n (n 一般为 3 或 5)次这样的... 数位dp 的一般解法 那么我们知道肯定不能在区间内一个个去判断数字是…
[学时·IV] 数位DP ■基本策略■ 说白了就是超时和不超时的区别 :) 有一些特别的题与数位有关,但是用一般的枚举算法会超时.这时候就有人提出了--我们可以用动态规划!通过数字前一位和后一位之间的关系,逐渐推导出所有数位上的值作为初始化(也有些不是),实现大部分计数问题的高效解决. 主要题型大概就是求 Min~Max 之间满足条件 E() 的数的个数,这里使用了前缀和的思想,即 F[i~j]=F[0~ j]-F[0~(i-1)].一般是将 F[] 初始化,但是针对某些特别题型,比如 E()…
TOJ1688: Round Numbers Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors', 'Ro, Sham, Bo', and a host of other names) in order to make arbitrary deci…
由简单到稍微难点. 从网上搜了10到数位dp的题目,有几道还是很难想到的,前几道基本都是模板题,供入门用. 点开即可看题解. hdu3555 Bomb hdu3652 B-number hdu2089 不要62 hdu4734 F(x) hdu4389 X mod f(x) ural1057 Amount of Degrees hdu4352 XHXJ's LIS CodeForces 55D Beautiful numbers zoj3416 Balanced Number VJ专题题目链接…
题目链接 学习大神的数位DP模版. #include <iostream> #include <cstdio> #include <cstring> using namespace std; ][][]; ]; //dp[i][j][k] 代表前i位余数为j时候 flag的3种情况 int dfs(int pos,int pre,int flag,int bound)//pos代表位置,pre代表余数, { ,end,tflag,tpre,i; )//flag 1代表上…
题目链接:  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3494 题目大意:给定一些被禁止的BCD码.问指定范围内不含有任何这些禁止的BCD码的数的个数. 解题思路: AC自动机部分: 首先insert这些被禁止的BCD码. 然后打一下自动机前后状态的转移的表,用BCD[i][j]表示自动机状态i时,下一个数字是j的自动机的下一个状态. 一开始我考虑最先dfs的位在自动机的位置,后来发现SB了.AC自动机有一个roo…
题意:d magic number(0<=d<9)的意思就是一个数,从最高位开始奇数位不是d,偶数位是d 题目问,给a,b,m,d(a<=b,m<2000)问,a,b之间有多少个数满足既是d magic number,又可以被m整除 a,b的范围很大,都是2000位,且a,b的位数一样,这一点很重要 分析:这题一看又有取模,又是大整数,那肯定是要用数位dp做, 通常的数位dp,我们要解决(0,x)的区间中的答案,但是这个题不需要, 注意刚才我说过一点,a,b是位数相同的整数,假设s…