codeforces #319 DIV2 577B Modulo Sum

思路:

考虑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过程中可节约许多空间和时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值