一个套路题...但还是得写一下这个套路避免以后忘了

题目中的运算$f(i,j)=(i|j)\text^i$对单位二进制满足$f(0,0)=f(1,0)=f(1,1)=1,f(0,1)=0$

先考虑求正变换,即是求$b_i=\sum\limits_{j=0}^{n-1}\left[2|\text{bit}(f(i,j))\right]a_j$

用类似FWT的过程求$b$

假设我们已经对$l\leq i\leq mid$求出$b_i=\sum\limits_{j=l}^{mid}[2|\text{bit}(f(i,j))]a_j$,已经对$mid+1\leq i\leq r$求出$b_i=\sum\limits_{j=mid+1}^r[2|\text{bit}(f(i,j))]a_j$,现在我们想对$l\leq i\leq r$求$b_i=\sum\limits_{j=l}^r[2|\text{bit}(f(i,j))]a_j$

①对$l\leq i\leq mid$,$\sum\limits_{j=mid+1}^r[2|\text{bit}(f(i,j))]a_j=\sum\limits_{j=mid+1}^ra_j-b_{i+\frac{len}2}$(因为$b_{i+\frac{len}2}$的最高位是$f(1,1)=1$,我们要求的东西的最高位是$f(0,1)=0$,所以$\text{bit}(f(i,j))$奇偶性变化)

②对$mid+1\leq i\leq r$,$\sum\limits_{j=l}^{mid}[2|\text{bit}(f(i,j))]=b_{i-\frac{len}2}$(因为$b_{i-\frac{len}2}$的最高位是$f(0,0)=1$,我们要求的东西的最高位是$f(1,0)=1$,所以$\text{bit}(f(i,j))$奇偶性不变)

写成FWT的格式是$\begin{cases}a_{[0]}'=s_{[1]}-a_{[1]}+a_{[0]}\\a_{[1]}'=a_{[1]}+a_{[0]}\end{cases}$,立得逆变换$\begin{cases}a_{[0]}=\frac{a_{[1]}'+a_{[0]}'-s_{[1]}}2\\a_{[1]}=\frac{a_{[1]}'-a_{[0]}'+s_{[1]}}2\end{cases}$

这种类型的题目大部分可以这样推导出来

剩下一个小问题就是求$s_{[1]}$,一般题目中给的这个运算能让你快速求它,比如这道题中$s_{[1]}=b_{r}-b_{mid}$

时间复杂度$O(n\log_2n)$

#include<stdio.h>
typedef long long ll;
#define NUM(x) ('0'<=x&&x<='9')
char c[40000010];
int ns;
inline ll rd(){
	while(!NUM(c[ns]))ns++;
	ll x=0;
	while(NUM(c[ns]))x=(x<<3)+(x<<1)+c[ns++]-'0';
	return x;
}
ll a[1048576];
int n;
void trans(ll*a){
	int i,j,k;
	ll s,u,v;
	for(i=n;i>1;i>>=1){
		for(j=0;j<n;j+=i){
			s=a[j+i-1]-a[j+i/2-1];
			for(k=0;k<i>>1;k++){
				u=a[j+k];
				v=a[i/2+j+k];
				a[j+k]=(u+v-s)/2;
				a[i/2+j+k]=(-u+v+s)/2;
			}
		}
	}
}
int main(){
	c[fread(c,1,40000010,stdin)]=0;
	int i;
	n=rd();
	for(i=0;i<n;i++)a[i]=rd();
	trans(a);
	for(i=0;i<n;i++)printf("%lld ",a[i]);
}

[BZOJ5267]特工的更多相关文章

  1. 2016动作短片《全境封锁:特工起源》HD720P.英语中字

    导演: 德文·格雷厄姆主演: Matt Lynch / Sasha Andreev / Amanda Day类型: 动作 / 短片制片国家/地区: 美国语言: 英语上映日期: 2016-01-19片长 ...

  2. 【图文】雪佛兰Suburban 美国特工标准座驾_新闻中心_易车网

    [图文]雪佛兰Suburban 美国特工标准座驾_新闻中心_易车网 雪佛兰Suburban 美国特工标准座驾

  3. 宇宙探索特工队&scrum

    对scrum的一些理解 Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责 ...

  4. 现象级AR营销助力“口碑双十二”,蚂蚁特工在全国数万商户掀起“AR捉四宝”

    领取阅读奖励金 今年双十二,全国人民吃喝玩乐放飞自我,嗨出了新纪元.除了见证你国人民的财力,这个“双十二”还诞生了教科书级的“AR营销”.无论是在口碑商户门口,还是在各大购物广场,都能看到举着手机,正 ...

  5. >>我要做特工系列 之 CSS 3_animation_向右滑出后下滑并停止

    新手入门还没有正式发点啥东西,都是在装潢博客这个家了,到现在为止还是没有装修好..熟悉了这边的发布规范之后会持续在这里记录,给自己留下学习的脚印~ 这正式的第一篇随笔写个使用css3的动画效果. 总感 ...

  6. 【POI】T1 特工 szp

    T1 特工szp [问题描述] Byteotian 中央情报局 (BIA) 雇佣了许多特工. 他们每个人的工作就是监视另一名特工.Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过 ...

  7. Asp.Net Mvc自定义控件之树形结构数据生成表格 - WPF特工队内部资料

    最近项目中有一个需求,将树形结构的数据,以表格的形式展示在页面中,下图是最终呈现效果: 源码: @{ Layout = null; } <!DOCTYPE html> <html&g ...

  8. [异常特工]android常见bug跟踪

    前言 对app的线上bug的收集(友盟.云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的.这使得对bug的解决无从下手,根据经验,内存不足OOM,Dialog关闭,ListVie ...

  9. WPF报表自定义通用可筛选列头-WPF特工队内部资料

    由于项目需要制作一个可通用的报表多行标题,且可实现各种类型的内容显示,包括文本.输入框.下拉框.多选框等(自定的显示内容可自行扩展),并支持参数绑定转换,效果如下: 源码结构 ColumnItem类: ...

随机推荐

  1. Piggy-Bank(多重背包+一维和二维通过方式)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题面: Problem Description Before ACM can do anythi ...

  2. java map转json servlet response

    1.手写一个map转json的类 1.1 调用方式 //给前端放回json数据 Map<String, Object> map = new HashMap<>(); map.p ...

  3. html+js实现的触屏版贪吃蛇

    查看线上demo(服务器经常断开,推荐下载源码本地打开): http://47.93.103.19:8044/client/ ; 使用手机打开或者chrome浏览器的手机模式打开 源码地址 :http ...

  4. 一个简单爬免费代理IP的脚本

  5. js/jq 键盘上下左右回车按键

    js判断上下左右回车按键: document.onkeydown=function(e){ e=window.event||e; switch(e.keyCode){ case 37: //左键 co ...

  6. python基础===时间处理模块

    时间模块 Python中有很多方便我们处理时间信息的模块 time 模块 datetime 模块 pytz 模块 dateutil 模块 这里我们着重介绍的是前两种 time模块 time.time( ...

  7. python基础===一道小学奥数题的解法

    今早在博客园和大家分享了一道昨晚微博中看到的小学奥数题,后来有朋友给出了答案.然后我尝试用python解答它. 原题是这样的: 数学题:好事好 + 要做好 = 要做好事,求 “好.事.做.要”的值分别 ...

  8. sunos kernel src

    https://github.com/eocallaghan/AuroraUX-SunOS https://github.com/zoyanhui/coroutine-libtask https:// ...

  9. rhel-server srpms iso

    http://ftp.redhat.com/pub/redhat/linux/enterprise/7Server/en/ ftp://ftp.pslib.cz/pub/linux/redhat-cz ...

  10. 用selenium 模块控制浏览器

    11.8 用selenium 模块控制浏览器selenium 模块让Python 直接控制浏览器,实际点击链接,填写登录信息,几乎就像是有一个人类用户在与页面交互.与Requests 和Beautif ...