Codeforces Round #257 (Div. 1) D - Jzzhu and Numbers 容斥原理 + SOS dp
2024-10-21 07:50:41
这个容斥没想出来。。。 我好菜啊。。
f[ S ] 表示若干个数 & 的值 & S == S得 方案数, 然后用这个去容斥。
求f[ S ] 需要用SOSdp
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long
using namespace std; const int N = 1e6 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; int cnt[<<], bin[N], num[<<], n; int main() {
for(int i = bin[] = ; i < N; i++) bin[i] = bin[i - ] * % mod;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
int x; scanf("%d", &x);
cnt[x]++;
}
for(int i = ; i < ; i++)
for(int S = ; S < ( << ); S++)
if(S >> i & ) cnt[S ^ ( << i)] += cnt[S];
LL ans = bin[n];
for(int S = ; S < ( << ); S++) {
num[S] = num[S-(S&-S)] + ;
if(num[S] & ) ans = (ans - bin[cnt[S]] + mod) % mod;
else ans = (ans + bin[cnt[S]]) % mod;
}
printf("%lld\n", ans);
return ;
} /*
*/
最新文章
- Android三种消息提示
- ios本地推送
- Spring 源码学习
- Codeforces 721D [贪心]
- hibernate cascade=CascadeType.All
- C#常用函数--通用篇
- Java之获取系统属性
- IE layout详解
- css 中的若干心得
- ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)
- 201521123035《Java程序设计》第十周实验总结
- Storyboard的几点缺憾
- Windows下Maven3.3.9安装与配置
- Mask RCNN 原理
- Visual Studio自动添加头部注释
- 开始Django之旅
- Guava包学习--Multiset
- ios 给UIImageView添加阴影
- ON DUPLICATE KEY UPDATE 插入or更新
- 16.数据类型(data_type)