题意:

给你一个数组R,包含N个元素,求有多少满足条件的序列A使得

0 ≤ A[i] ≤ R [ i ]
A[0]+A[1]+…+A[N−1] =A[0] | ]A[1]… | A [ N − 1 ]
输出答案对1e9+9取模

题解:

参考博客
数位dp问题
如果和等于或的话,说明两种情况:

  1. 多个数的该二进制位只有一个1
  2. 多个数该二进制位的都没有1
    说明要满足等式,每一位数的二进制只能出现在这个n个数中的某一位上
因为加法是把每个二进制位上的数字加起
而或是最多只能有1
如果有一个二进制位有两个数都是1
那么一定会导致这个位往上一位进1
那就影响其他位了
一定不可能相等的
101和10 = = 111
加起来也是
但110+10 = = 1000
110|10 = = 110

我们简化问题,对于(a,b),如果a + b= a | b且a<=r0&&b<=r1
设dp[len][limit1][limit2]表示枚举到二进制第len位,a是否限制,b是否限制,limit1和limit2的值为0或1,
这样我们只需要暴力考虑当前位二进制填0还是1,并考虑是填在a还是b

现在将问题扩展,对于(a,b,c,…),根据题目n最多10,那我们开个11维的数组就可以了dp[len][2][2]…[2],但是我们注意到从第二位到最后一位都只用来表示0和1,那么我们将这些压缩,用二进制压缩,这样就成二维数组了dp[len][x].x的二进制下表示每个数卡不卡上界

代码:

代码里有加注释

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=11,M=65;
const ll mod=1e9+9;
ll R[N];
int n;
ll dp[M][1<<N];inline ll dfs(ll s,ll pos)//每个与前面相同情况,现在分配到了第pos位.
{ll &ans=dp[pos][s];if(pos<=0) return 1;if(ans) return ans;//先分配0.int sp=s;for(int i=0;i<n;i++){if((s&(1<<i))&&(R[i]&(1ll<<(pos-1))))//假设这一位和R[i]的前pos-1位相同.{sp^=(1<<i);}}ans=(ans+dfs(sp,pos-1))%mod;//分配一个1.for(int i=0;i<n;i++){if((s&(1<<i))){if(!(R[i]&(1ll<<(pos-1)))) continue;ans=(ans+dfs(sp^(1ll<<i),pos-1))%mod;}else ans=(ans+dfs(sp,pos-1))%mod;}return ans;
}int main()
{scanf("%d",&n);for(int i=0;i<n;i++){scanf("%lld",&R[i]);}printf("%lld\n",dfs((1<<n)-1,60ll));return 0;
}

【每日一题】1月29日题目 和与或相关推荐

  1. 牛客网 每日一题 7月23日题目精讲—wpy的请求

    来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...

  2. 第五人格七月三日服务器维护要多久,第五人格微信每日一题7月3日答案是什么_今天有四个人来访过_玩游戏网...

    <第五人格>2021独特时装体验卡礼包 第五人格2021独特时装体验卡礼包怎么获得?礼包中有独特时装体验卡.角色体验卡等奖励,小编这里就分享一下第五人格2021独特时装体验卡礼包领取地址, ...

  3. 牛客网【每日一题】7月29日题目精讲—Max Power

    来源:牛客网: Max Power 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 小卤蛋刚把 ...

  4. 牛客网【每日一题】4月29日题目精讲 Symmetric Matrix

    链接: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 输入描述: The input ...

  5. 【备战秋招】每日一题:4月23日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

    为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第三题-农村大亨 在线评测链接:P1247 题目内容 塔子哥是一个喜欢种田类的游戏的人,他觉得这样的游戏可以让他体验到农民的乐趣,同时 ...

  6. PMP模拟试题每日5题(5月5日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.你的敏捷团队与一个开发商 ...

  7. PMP模拟试题每日5题(5月7日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.产品开发团队采用敏捷开发 ...

  8. PMP模拟试题每日5题(4月28日)

    摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.项目需要委托第三方研发一 ...

  9. PMP模拟试题每日5题(4月22日)

    ​​​​摘要:为帮助即将参加PMP®考试的考生快速熟悉PMP®试题.熟练掌握PMP®相关考点知识,本专栏将每日推出5道PMP®模拟试题(包含试题原题和答案解析),快来进行练习吧! 1.项目技术团队强烈 ...

最新文章

  1. UVa11300 Spreading the Wealth(数学问题)
  2. C++ Primer 5th笔记(chap 13 拷贝控制)实例1
  3. Qt修炼手册6_图形:图形视图框架
  4. pytorch之torch.backends.cudnn.benchmark=True——使用 GPU 来加速网络的训练
  5. NOIP2005复赛 普及组 第1题 陶陶摘苹果
  6. Matlab求高斯脉冲函数
  7. 2018百度之星程序设计大赛-资格赛P1002子串查询(前缀和)
  8. 排序算法-----冒泡排序和选择排序
  9. HDU 6122 今夕何夕 【数学公式】 (2017百度之星程序设计大赛 - 初赛(A))
  10. 反激变换器matlab仿真变压器demo,反激变换器建模Matlab仿真
  11. 专业显卡测试软件 spec,AMD Radeon Pro WX8200专业图形显卡评测 对比Quadro P5000
  12. NTFS与FAT32区别大揭秘
  13. java耗时操作_耗时操作方案总结
  14. 342. 道路与航线
  15. Macbook Pro上手手札
  16. 腾讯云服务器修改和重置登录密码图文教程
  17. 计算机方向kade期刊,计算机辅助导航技术在上颌骨肿瘤切除及缺损重建中的应用...
  18. python 单词纠错_Python 简单单词纠错识别
  19. linux 云计算 python 零基础 开机流程
  20. 自己学习c++过程中写下的笔记,只做基础了解使用

热门文章

  1. 每日一笑 | 今天是植树节,我想在你心里种点逼树
  2. 大数据人工智能时代,这个行业终于爆发了!
  3. 如何解读决策树和随机森林的内部工作机制?
  4. java 录屏_java 录屏 小工具源码(idea)
  5. android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码
  6. 升级总代分享思路_桃生企业至尊七郎瓷砖新展厅全新升级惊艳亮相
  7. jq校验输入框值变化时_谈谈自己对CRC校验的理解
  8. d.ts文件可以注释html吗,如何编写一个d.ts文件的步骤详解_旧店_前端开发者
  9. php dechex 补零,PHP dechex()函数
  10. python http协议获取对方的ip地址_http协议(一)基础知识