「postOI」Lost Array
题意
有一个序列
( ); ( ); ( )。
现在给出
解析
题目给出的是
倒过来想,考虑
那具体贡献多少?我们可以把问题具象化,
这样我们就可以通过组合数算出
这样并不好看,我们设
为奇数当且仅当 。
也就是说
似乎有一个做法,如果把
这
我们再考虑一下
则由容斥可得下式(容斥的正负系数在异或中没有意义)
唔,看起来好像没什么区别,还更麻烦了?先分析一下,由于
当然是可以的——因为这是或卷积的 fwt,计算
最后再用完整的
源代码
Copy#include <cstdio>
#include <cstring>
#include <algorithm>
const int MAXN = (int)5e5 + 10;
int len, lg2_len;
int arr[MAXN];
void fwtOr()
{
for (int i = 0; i <= lg2_len; ++i)
{
for (int j = 0; j < len; ++j)
{
if (j & (1 << i))
{
arr[j] ^= arr[j ^ (1 << i)];
}
}
}
}
void fwtAnd()
{
for (int i = 0; i <= lg2_len; ++i)
{
for (int j = 0; j < len; ++j)
{
if (j & (1 << i))
{
arr[j ^ (1 << i)] ^= arr[j];
}
}
}
}
int main()
{
scanf("%d", &len);
for (int i = 0; i < len; ++i)
{
scanf("%d", &arr[i]);
}
while ((1 << lg2_len) < len)
{
++lg2_len;
}
fwtOr();
fwtAnd();
for (int i = 1; i < len; ++i)
{
printf("%d ", arr[len - i]);
}
printf("%d\n", arr[0]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2018-09-01 【例题收藏】◇例题·V◇ Gap