BZOJ 5267 特工 (类FWT)
题意
题解
从大到小枚举\(l\), 把一个序列从\(2^{l+1}\)分成两个独立的\(2^l\),去除两半的影响。
设去除前的序列为\(b\), 去除后序列为\(b'\)
则有\(b_{2^{l+1}-1}-b_{2^l-1}=\sum^{2^{l+1}-1}_{i=2^l}b_i\)
考虑左边的一个位置\(d\)与右边的位置\(d+2^l\)相对应
考虑一个序列\(s_0\)的第\(i\)位为\(\text{bitcount}((i\ \text{or}\ d)\ \text{xor}\ i)\),\(s_1\)为把\(s_1\)的\(d\)换成\(d+2^l\)的结果
显然两个序列左半部分完全一样,右半部分完全相反
设\(z\)为\(b'\)与\(s_0\)(或\(s_1\))左半部分对应位置乘积之和,\(y_0,y_1\)分别为\(b'\)与\(s_0,s_1\)右半部分对应位置乘积之和
则\(b'_d=z,b'_{d+2^l}=y_1\)
且有方程\(z+y_0=b_d,z+y_1=b_{d+2^l},y_0+y_1=b_{2^{l+1}-1}-b_{2^l-1}\)
解之即可。
时间复杂度\(O(n\log n)\).
代码
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cassert>
#define llong long long
using namespace std;char c[40000010];
int ns;
inline llong read(){while(c[ns]<'0'||c[ns]>'9')ns++;llong x=0;while(c[ns]>='0'&&c[ns]<='9')x=(x<<3)+(x<<1)+c[ns++]-'0';return x;
}const int N = 1<<20;
llong a[N+3];
int n;int main()
{c[fread(c,1,40000010,stdin)]=0; //input optimizationn = read();for(int i=0; i<n; i++) a[i] = read();for(int i=(n>>1); i; i>>=1){for(int j=0; j<n; j+=(i<<1)){llong tmp = a[j+(i<<1)-1]-a[j+i-1];for(int k=0; k<i; k++){llong x = a[j+k],y = a[j+i+k];a[j+k] = (-tmp+x+y)>>1,a[j+i+k] = (tmp-x+y)>>1;}}}for(int i=0; i<n; i++) printf("%lld ",a[i]); puts("");return 0;
}
BZOJ 5267 特工 (类FWT)相关推荐
- Sequence II HDU - 5919(主席树)
Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,an There are ...
- 绝对经典!看好莱坞最青睐哪一款电视?
现在关于电视品牌的广告可谓铺天盖地,几乎所有的电视企业都宣称自己是行业领先品牌.龙头企业......这无疑让广大的消费者犯了愁:到底哪个商家的电视好啊?让我们来看一下影视界大亨好莱坞最青睐哪一款电视吧 ...
- 自己搜集编写的Delphi 通用函数
{ ********************************************************************** } { Currency Common Functio ...
- BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2159 是 hydro 的 BZOJ ...
- 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数
出处0.0 用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O( ...
- BZOJ 4555 Luogu P4091 [HEOI2016/TJOI2016]求和 (第二类斯特林数)
题目链接 (lugou) https://www.luogu.org/problem/P4091 (bzoj) https://www.lydsy.com/JudgeOnline/problem.ph ...
- CSTC 2001 聪明的学生 BZOJ 2523 递归(类搜索,推理)
今天我们来看一道比较奇怪的题 这是一道递归的类搜索题 不过思维性特别强 下面是题干 哦 对了 还是一道游戏题 一位教授逻辑学的教授有三名非常善于推理且精于心算的学生A,B和C.有一天,教授给他们三人出 ...
- bzoj 4711 小奇挖矿 ——“承诺”类树形dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711 对"承诺"有了更深的了解. 向外和向内要区分,所以 f [ i ] ...
- bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 不要见到组合数就拆! 枚举每个点的度数,则答案为 \( n*\sum\limits_{ ...
最新文章
- 直播回顾|大规模点云显示技术
- Delphi - 数组 详解
- OpenGL材质和光照(转)part1
- 使用pdf.js预览实现读取服务器外部文件
- 三种banner基础形态
- ERROR: source database template1 is being accessed by other users解决方法
- 如何解决安卓项目在Android Studio无法打开
- 277. Find the Celebrity
- 获取指定路径下所有PDF文件的总页数
- 我想我是适合独处的人
- oracle去除逗号函数,oracle逗号分隔函数
- [2018.07.21 T2] 离家出走
- 《c语言程序设计》-谭浩强
- 云数智驱动数据高速增长,浪潮存储提供EB级容量扩展
- 罗切斯特大学计算机科学硕士介绍,罗切斯特大学计算机科学硕士排名第61(2020年TFE Times排名)...
- Android app资源监控
- linux命令v---vi
- 用于说明卷积神经网络(ConvNet)的Python脚本
- 清理Maven本地仓库.lastUpdated文件
- C# EF框架(一)配置