bzoj2757】的更多相关文章

BZOJ AC900题纪念~~ 若K>0,则 设f[i][j]表示i位数字,积为j的数字的个数 g[i][j]表示i位数字,积为j的数字的和 DP+Hash预处理 查询时枚举LCP然后统计贡献 若K=0,则 设f[i][j][k][l]表示已知前i位,乘积是否不为0,是否等于x,是否有数字的数字的个数 g[i][j][k][l]表示已知前i位,乘积是否不为0,是否等于x,是否有数字的数字的和 数位DP即可 #include<cstdio> typedef long long ll; co…
非常神的数位dp,我调了几乎一天首先和bzoj3131类似,乘积是可以预处理出来的,注意这里乘积有一个表示的技巧因为这里质因数只有2,3,5,7,所以我们可以表示成2^a*3^b*5^c*7^d,也就是v[a,b,c,d]这个数组这样也非常方便进行除法,乘法的状态转移,转移和要维护的东西比较多,我就直接在程序里注释了这里维护转移的核心思想是算每一位对编号和的贡献,乘积为0和非0分开计算 ; lim=; q:..,..] ,,,),(,,,),(,,,),(,,,),(,,,), (,,,),(,…
题目描述 Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字之积表示这名仰慕者对Blinker的重要度. 现在Blinker想知道编号介于某两个值A,B之间,且重要度为某个定值K的仰慕者编号和. 输入格式 输入的第一行是一个整数N,表示Blinker想知道的信息个数. 接下来的N行,每行有三个数,A,B,K.表示 Blinker想知道编号介于A和B之间的,重要度为K的仰慕者的编号和. 输出格式 输出N行,每行输出介于A和B之间,重要度…
[BZOJ3131] [Sdoi2013]淘金 Description 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块.一阵风吹过,金子的位置发生了一些变化.细心的小Z发现,初始在(i,j)坐标处的金子会变到(f(i),fIj))坐标处.其中f(x)表示x各位数字的乘积,例如f(99)=81,f(12)=2,f(10)=0.如果金子变化后的坐标不在1..N的范围内,我们认为这块金子已经被移出游戏…
还是前置: 动态规划的三种实现方法: 递推,递归,记忆化搜索 然后还是从斐波那契数列开始引入: 两种求斐波那契数列的方法: 1.用其他位置的结果得到自己的结果: 2.用自己的结果算其他的结果: 以上两种方法都需要掌握,不同的题对应不同的写法: 3.记忆化搜索(虽然zhx说不是特别重要但lz比较喜欢写的) 没有记忆化之前:O(f[n])与2^n差不多是一个级别的: 记忆化之后: DP的一些一些要求: 无后效性:所有状态之间组成了一个DAG 阶段性: 转移方程:怎么算这个东西 状态:要算的东西对应的…