codeforces #319 DIV2 577B Modulo Sum

来源:互联网 发布:2016淘宝双11晚会 编辑:程序博客网 时间:2024/06/05 04:02

思路:

考虑n>=m的时候:

根据鸽巢原理

N = 6  , m = 5

R0 R1 R2 R3 R4 (Ri:i= sumi%5)

假设n个数字分别为 a b c d e f

Sum1 = (a)%m

Sum2 = (a+ b)%m

Sum3 = (a+b+c)%m

Sum4 = (a+b+c+d)%m

Sum5 = (a+b+c+d+e)%m

Sum6 = (a+b+c+d+e+f)%m

根据鸽巢原理 六个和放进五个笼子里面 必然会有一个放在相同的笼子里面,如 sum5=sum1,此时b+c+d+e必然符合条件,输出必然为YES,

考虑n<m:

状态转移方程Dp[i][j]表示加上ai以后模m的结果是否存在

循环i(1~n)、j(1~m)

Dp[i][(j+ai)%m]= 1【+ai以后结果】

Dp[i][j] = 1【不加ai结果】

总结:

代码网上有,主要考虑n和m的大小关系,这样DP过程中可节约许多空间和时间。

0 0
原创粉丝点击