随笔分类 - 数位DP
摘要:题意: 给定范围[L, R] 和 k(1~10)求范围内数位的LIS(最长上升子序列)等于k的数的个数。 思路: 普通的LIS做法是对于当前的数,在模拟数列中找到第一个比他大的并替换掉。 在数位DP中需要状态压缩,其实对于每个数只有两种状态,即在模拟数列中或者不在。那么就可以用二进制(1<<10)来
阅读全文
摘要:题意: 求出所给范围内满足其数位上的奇数出现偶数次,数位上的偶数出现奇数次(或不出现)的数的个数。 思路: 对于0 ~ 9 每个数有3种情况。 1.没出现过 2.出现奇数次 3.出现偶数次 那么就可以用三进制来表示状态。 #include <iostream> #include <cstring>
阅读全文
摘要:题意: 在给定范围内(9*10^18)求出有多少个数满足被所有非零位的数整除。 思路: 可以先想到如果被所有非零位的数整除,那么就会被他们的lcm整除。 而lcm(1,2...9) = 2520. 即2520可以整除1 - 9中任意组合的lcm。 所以可以用%2520的值表示状态,最后用最终状态值%
阅读全文