2022 China Collegiate Programming Contest (CCPC) Guangzhou Onsite M. XOR Sum(数位dp 数位背包)

这篇博客探讨了一种使用数位动态规划(DP)解决组合计数问题的方法,涉及在给定限制条件下计算长度为k的数组a的方案数,其中每个元素在[0, m]范围内。博主通过分析数位贡献和余数约束,提出了转移方程,并给出了详细的代码实现。文章特别强调了处理边界条件和优化复杂度的重要性。

题目

给定n,m,k(0<=n<=1e15,0<=m<=1e12,1<=k<=18),

求长度为k的数组a,ai为[0,m]的整数,

满足\sum_{i=1}^{k}\sum_{j=1}^{i-1}a_{i}\bigoplus a_{j}=n的方案数

答案对1e9+7取模

题解

第一反应想起了hdu3693,但比对了一下,感觉那个题难很多,

两年前写的题忘了写题解,现在不会了

Educational Codeforces Round 104 (Rated for Div. 2) F.Ones(数位dp)_Code92007的博客-优快云博客

后来想了想,感觉更像这个题,按余数统计方案数,

控制余数在一定范围,姑且称它为数位背包

每一位的贡献可以独立考虑,而这个式子实际是(i,j)对的01值不同就会产生贡献,

所以只用关注当前几个填1几个填0,由于有的卡上界有的不卡,所以记录一下当前有几个卡上界

dp[i

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小衣同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值