Codeforces - Jzzhu and Numbers
題目連結:Codeforces - Jzzhu and Numbers
考慮反向列舉每個與運算不為0的集合個數,最後做差。
然後我們可以列舉每個最後與起來的答案,我們就可以利用容斥來做。先求出每個集合的超集個數,最後利用二進位制中1的個數來容斥。
當只有一個1的時候減去這個答案,2個1的時候,由於計算了2次所以加上,然後3個1減去依次類推。
AC程式碼:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e6+10,mod=1e9+7;
int n,a[N],dp[N],up,pw[N],res,cnt[N];
inline void add(int &x,int y){x+=y; if(x>=mod) x-=mod;}
signed main(){
cin>>n; pw[0]=1; up=(1<<20)-1;
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),pw[i]=pw[i-1]*2%mod,dp[a[i]]++;
for(int i=0;i<20;i++) for(int j=up;j>=0;j--) if(j>>i&1) add(dp[j^(1<<i)],dp[j]);
res=pw[n]-1;
for(int i=1;i<=up;i++){
cnt[i]=cnt[i>>1]+(i&1);
if(cnt[i]&1) res=(res-(pw[dp[i]]-1)+mod)%mod;
else res=(res+(pw[dp[i]]-1)+mod)%mod;
}
cout<<res;
return 0;
}
相關文章
- cf449D. Jzzhu and Numbers(容斥原理 高維字首和)
- Reversed Numbers
- 400多種Numbers模板 DesiGN for Numbers Templates for macMac
- Collecting Numbers II
- different random numbers generatorrandom
- Find All Numbers Disappeared in an ArrayAPP
- LeetCode 2 Add Two NumbersLeetCode
- 165. Compare Version Numbers
- Leetcode 165 Compare Version NumbersLeetCode
- 201-Bitwise AND of Numbers Range
- 829. Consecutive Numbers Sum
- 【Lintcode】1267. Lexicographical Numbers
- LeetCode-2 Add Two NumbersLeetCode
- Sum of Square Numbers 平方數之和
- Self Dividing Numbers 自除數
- LeetCode 2. Add Two NumbersLeetCode
- 129-Sum Root to Leaf Numbers
- Add_Two_Numbers python 求解Python
- B. Numbers Box(思維)
- Note 886532 - Pricing: Displaying and rounding numbers
- Leetcode 967 Numbers With Same Consecutive DifferencesLeetCode
- CF1406E Deleting Numbers
- C. k-Amazing Numbers
- Codeforces
- [題解]SP10606 Balanced Numbers
- LeetCode 129. Sum Root to Leaf NumbersLeetCode
- 421-Maximum XOR of Two Numbers in an Array
- CodeForces 1307
- 9.11 codeforces
- Bitcoin Node Numbers Fall After Spam Transaction "Attack"
- POJ3252Round Numbers(數位dp)
- [題解]CF55D Beautiful Numbers
- LeetCode之Sum of Even Numbers After Queries(Kotlin)LeetCodeKotlin
- CF878E Numbers on the blackboard 題解
- 題解:UVA13185 DPA Numbers I
- LeetCode 448. Find All Numbers Disappeared in an ArrayLeetCodeAPP
- 【CodeForces訓練記錄】Codeforces Global Round 27
- LeetCode2: Add two numbers(兩數相加)LeetCode