题意
给n个数,构造两个集合,使第一个集合的异或和等于第二个集合的相与和,且要求第一个集合的元素下标都小于第二个集合的元素下标。问方案数
分析
dp来做。dp1[i][j]表示0~i的元素异或和为j的个数。dp2[i][j]表示i~n-1的元素相与和为j的个数。注意状态转移时要同时计算第i个数参与或不参与的情况,且dp1的第一维不能取到n-1,类似的,dp2的第一维不能取0。统计最终答案时需要合并,那么怎么才能防止重复呢?这时再添加dp3[i][j]表示i~n-1的元素相与和为j的个数(i在集合中)。这样枚举i时,就能保证不重复不遗漏了。
#include #include #include #include #include #include #include #include