Gym-101484K Counting Good Teams [高维前缀和]

题意:给你n个m位数字,若两个数字满足a&b!=a&&a&b!=b的数字对数。

题解:换一个角度说,就是求所有对数减去 a&b==a||a&b==b的情况数目,我们可以通过,高维前缀和求出所有包含关系的数量,然后减去数字i与包含数字i的所有数字的对数,与数字i与自己的对数,就是答案。

AC代码:

#include
typedef long long ll;
int dp[(1<<21)|5],cnt[(1<<21)|5];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i0;j--)
			if(j&(1<


你可能感兴趣的:(高维前缀和,Codeforces,DP)