http://www.lightoj.com/volume_showproblem.php?problem=1068 求出区间[A,B]内能被K整除且各位数字之和也能被K整除的数的个数。(1 ≤ A ≤ B < 231 and 0 < K < 10000) 算是最简单的数位dp了,k在这里是10000,三维数组都开不开。但是想想会发现A,B最多有10位,各位数字之和不会超过90,那么当
题意:给定一个字符串A和字符串B,求A的不包含B的不同子串个数。 思路:首先把B串接到A串后面中间用一个A、B中均未出现的字符隔开,构成字符串s。求出每个字符对应的height[ i ]、sa[ i ]、rank[ i 。我们开一个rmax数组,rmax[ i ]存的是从A串的第i个字符向右能不形成包含B串的串的最长长度,那么我们必须先知道A串哪些位置 开始能形成B串。假设A串的长度为l
题目链接:LightOJ 1047 - Neighbor House 代码 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 30;const int inf = 0x3f3f3f3f;int N, dp[maxn][3];int main () {in