您的位置:首页 > 其它

codeforces #319 DIV2 577B Modulo Sum

2015-09-14 11:32 323 查看
思路:

考虑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过程中可节约许多空间和时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: