PS:题解来源于USACO官方,实际上是想练练翻译和表达能力,请不要在意细节,看不懂就继续看USACO的英文版题解吧……
题目:【传送门 http://www.usaco.org/index.php?page=viewproblem2&cpid=435】
官方题解:【传送门 http://www.usaco.org/current/data/sol_odometer_silver.html】
题目大意:给出一个范围 X..Y(X<=Y<=10^18),求出该范围中“有趣数字”的个数。对“有趣数字”的定义是:一个数字去掉前导0后至少一半数位上的数字相同。例如3223和1100是,而97791和123不是。
都明白 X..Y 中有趣的数字个数实际上等于 1..Y 中有趣数字的个数减去 1..X-1 中的数字个数吧?我们只要考虑如何求 1..a 中的个数 f(a) 即可。
要求 f(a) ,我们可以通过自己构造数字的方法统计个数。因为要求数字中有一半以上的数位上的数字相同,我们只需枚举这个重复的数字是 0..9 的哪一个就是了,设为targ。
定义 F[i][und][k][is0],