参考: https://blog.csdn.net/weixin_42324771/article/details/87533713
- #include<bits/stdc++.h>
- using namespace std;
- const int N=5*1e4+10;
- const int M=1e7;// 这里不能开到 1e8, 否则会报错!!
- int in[N]={0};//int 是 4 字节, 超过了 20 位, 所以够用
- int ans[M]={0};
- int main()
- {
- // freopen("in.txt","r",stdin);
- int n,m;
- cin>>n>>m;
- for (int i=0;i<n;i++)
- {
- for (int j=0;j<m;j++)
- {
- int temp;
- cin>>temp;
- in[i]=in[i]<<1;// 左移后要赋值, 否则原数不受影响!!
- in[i]+=temp;
- }
- ans[in[i]]++;
- }
- int anss=0,st;
- st=(1<<m)-1;
- for (int i=0;i<n;i++)
- {
- int temp=st^in[i];
- anss+=ans[temp];
- }
- cout<<anss/2<<endl;
- // for (int i=0;i<n;i++)
- // {
- // cout<<in[i]<<endl;
- // }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2974003.html