因为是子序列,所以可以不连续,因此需要保存每个区间上余数为0,1,2的数目 用dp[i][k] 表示从0到i区间上,余数为k的数目 因为每次区间扩张一个数时,如果这个数的对3的余数为1,那么只要这个新的数结合上上一个区间余数为2的数列,新的子序列的余数就是0了, 别忘了还有原先子序列本来余数就是0的数,对于这些数来讲,不需要加上新来的数,因此直接继承即可。 也就是 dp[i][0]=dp[i-1][0]+dp[i-1][2]; 同样的,dp[i][1]=dp[i-1][1]+dp[i-1][0]+1; 只要0~i-1区间上余数为0的数列,加上新来的第i个数后,就是余数为1了。另外因为新的数本身...