【刷题】BZOJ 2194 快速傅立叶之二

Description

请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5。 a,b中的元素均为小于等于100的非负整数。

Input

第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 < = i < N)。

Output

输出N行,每行一个整数,第i行输出C[i-1]。

Sample Input

5
3 1
2 4
1 1
2 4
1 4

Sample Output

24
12
10
6
1

Solution

看上去是个FFT的模板题,实际上它就是的
将b数组翻转之后,c数组就可以用FFT求了
手写c数组原来一些位置的式子,然后会发现它们在新的c数组的位置的规律
输出就好了

#include<bits/stdc++.h>
#define ui unsigned int
#define ll long long
#define db double
#define ld long double
#define ull unsigned long long
const db Pi=acos(-1);
const int MAXN=1<<19;
int n,m,cnt,rev[MAXN],sn;
struct Complex{db real,imag;inline Complex operator + (const Complex &A) const {return (Complex){real+A.real,imag+A.imag};};inline Complex operator - (const Complex &A) const {return (Complex){real-A.real,imag-A.imag};};inline Complex operator * (const Complex &A) const {return (Complex){real*A.real-imag*A.imag,imag*A.real+real*A.imag};};
};
Complex a[MAXN],b[MAXN];
template<typename T> inline void read(T &x)
{T data=0,w=1;char ch=0;while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();if(ch=='-')w=-1,ch=getchar();while(ch>='0'&&ch<='9')data=((T)data<<3)+((T)data<<1)+(ch^'0'),ch=getchar();x=data*w;
}
template<typename T> inline void write(T x,char ch='\0')
{if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');if(ch!='\0')putchar(ch);
}
template<typename T> inline void chkmin(T &x,T y){x=(y<x?y:x);}
template<typename T> inline void chkmax(T &x,T y){x=(y>x?y:x);}
template<typename T> inline T min(T x,T y){return x<y?x:y;}
template<typename T> inline T max(T x,T y){return x>y?x:y;}
inline void FFT(Complex *A,int tp)
{for(register int i=0;i<n;++i)if(i<rev[i])std::swap(A[i],A[rev[i]]);for(register int l=2;l<=n;l<<=1){Complex wn=(Complex){cos(2*Pi/l),sin(tp*2*Pi/l)};for(register int i=0;i<n;i+=l){Complex w=(Complex){1,0};for(register int j=0;j<(l>>1);++j){Complex A1=A[i+j],A2=A[i+j+(l>>1)]*w;A[i+j]=A1+A2,A[i+j+(l>>1)]=A1-A2;w=w*wn;}}}
}
int main()
{read(n);m=n+n-1;sn=n;for(register int i=0;i<n;++i)scanf("%lf%lf",&a[i].real,&b[i].real);std::reverse(b,b+n);for(n=1;n<m;n<<=1)++cnt;for(register int i=0;i<n;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<(cnt-1));FFT(a,1);FFT(b,1);for(register int i=0;i<n;++i)a[i]=a[i]*b[i];FFT(a,-1);for(register int i=sn-1;i<=sn+sn-2;++i)write((int)(a[i].real/n+0.5),'\n');return 0;
}

转载于:https://www.cnblogs.com/hongyj/p/9561481.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MAC 安装 Magento2 community edition 详细步骤

花了好几天时间&#xff0c;终于在Mac OS X EI Capitan上成功安装magento2.1.1. 此处详细记录每个步骤&#xff0c;以备未来使用。 参考magento官方指南&#xff1a;(Easy) Install the Magento archive on your server 1. 确保系统满足prerequisite&#xff1a; 建议不要使用…

22_IO_第22天(File、递归)_讲义

今日内容介绍 1、File 2、递归 xmind&#xff1a;下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Eaj9yP5i0x4PiJsZA4StQg 密码&#xff1a;845a 01IO技术概述 * A:IO技术概述* a: Output* 把内存中的数据存储到持久化设备上这个动作称为输出&#xff08;写&a…

MAC PHP7 如何disable xdebug

1. 查看xdebug当前状态是否是enable 打开terminal&#xff0c;输入&#xff1a; php -m | grep xdebugterminal返回xdebug&#xff0c;说明现在xdebug是enable状态。 2.找到php配置文件夹 在terminal中输入&#xff1a; which php 进入php.d文件夹&#xff0c;可以看到exten…

django之上传图片

上传图片 当Django在处理文件上传的时候&#xff0c;文件数据被保存在request.FILESFILES中的每个键为<input type"file" name"" />中的name注意&#xff1a;FILES只有在请求的方法为POST 且提交的<form>带有enctype"multipart/form-data…

『 Luogu P3205 』 HNOI2010 合唱队

解题思路 设置两个二维数组 $f$ 和 $g$&#xff0c;含义如下。 $f[l][r]$ 表示在期望得到的队形中 $l\rightarrow r$ 这段区间初始队形排列的方案数&#xff0c;并且最后一个加入进去的是第 $l$ 个人。 $g[l][r]$ 表示在期望得到的队形中 $l\rightarrow r$ 这段区间初始队形排列…

福大软工1816 · 第一次作业 - 准备

福大软工1816 第一次作业 - 准备 期待→迷茫→恐惧→振作or放弃&#xff1f; 前言&#xff1a;个人情况概述 虽然长辈都说我是个聪明的孩子&#xff0c;但我觉得也许那只是客套话——还记得从小学时我的成绩仅处于中游偏下&#xff0c;初中稍有提升&#xff0c;但到高中又回到…

cf242 E

题意&#xff1a; $n$ 个数 $a_i$, 两种询问 $1, l, r$ 查询 $[l, r]$ 的和 $2, l, r, x$ 将区间 $[l, r]$ 所有数异或 $x$ 建立 $30$ 课线段树 第 $i$ 颗线段树维护所有 $a$ 二进制的第 $i$ 为上的数字 $0, 1$ 异或操作分别以 $x$ 的二进制相应位异或相应线段树 可见只有当 $…

记忆力

1、越集中注意力&#xff0c;越难回想起我们的记忆&#xff0c;就像我们看一个字看久了&#xff0c;会慢慢不认识。 2、转载于:https://www.cnblogs.com/LXP-Never/p/9579978.html

物联网初步之电阻性电路分析 第三部分 电路分析方法和电路原理

目录 电阻性电路分析第三章 电路分析方法3-1 支路电流法3-2 网孔电流法3-3 节点电位法3-4本章总结第四章 电路定理4-1 叠加定理戴维南定理和诺顿定理电阻性电路分析 声明&#xff1a;本学习笔记中的部分图片来自于王丽华老师的PPT&#xff0c;感想王老师~~ 第三章 电路分析方法…

《前端JavaScript重点》学习笔记 1-5

JS三座大山&#xff1a;原型和原型连、作用域和闭包、异步和单线程第一篇-----变量类型和计算 参考&#xff1a;https://www.jianshu.com/p/8cb184b26ed1题目&#xff1a;1.JS中使用typeof能得到哪些类型2.何时使用&#xff0c;何时使用3.JS有哪些内置函数4.JS变量按照存储方式…

将页面数据转json存入数据库

SSMlayui前台页面将数据转json存入数据库 最近做了一个添加的功能&#xff0c;页面中的字段并不是和数据库变字段一 一对应的&#xff0c;页面中好几个字段的值要把它们转为json&#xff0c;然后存入数据库表中的一个字段。 1&#xff0c;首先是添加了一个实体类来放这些数据…

简述openstack

大家好&#xff0c;我顾某人又回来了&#xff0c;开学第一更。。。。以下内容均为个人理解和整理&#xff0c;有不对的地方还望dalao指正。。。。。 本文所用图片均已标明来源。 openstack是什么&#xff1f; OpenStack是一个开源的云计算管理平台项目&#xff0c;由几个主要的…

vue+layui获取CheckBox的值

vuelayui获取CheckBox的值 定义一样的name和v-filter 然后对其进行监听。

rocket-console控制台安装

1.下载 github地址&#xff1a;https://github.com/apache/rocketmq-externals 2.选择稳定版本&#xff1a; 3.下载到本地&#xff1a; 环境需求 maven jdk git clone https://github.com/apache/rocketmq-externals.git 4.修改配置&#xff1a; find -name application…

只允许对最后一条记录进行修改

今天做了个小功能想和大家分享一下在我任务描述里有个这样的描述&#xff1a;只能对最后一条记录进行修改。我刚开始我这样想的&#xff0c;每条记录前面都有给他一个radio&#xff0c;然后对你选择的数据去判断他是不是最后添加的那一条&#xff0c;后台发现这样有点难度&…

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

为了加强安全性&#xff0c;MySQL5.7为root用户随机生成了一个密码&#xff0c;在error log中&#xff0c;关于error log的位置&#xff0c;如果安装的是RPM包&#xff0c;则默认是/var/log/mysqld.log。 一般可通过log_error设置 mysql> select log_error; ---------------…

vue复选框CheckBox清空选中的值

最近遇到了这样的一个问题&#xff0c;做了一个添加功能&#xff0c;发现添加了一次记录以后&#xff0c;添加第二次的时候&#xff0c;页面上复选框有我上次选中的值&#xff0c;后来试了很多方法&#xff0c;只有下面这个方法解决了这个问题。上面标出来的是对普通的input进行…

keepalived+lvs搭建高可用负载均衡集群

keepalived与DR模式 主keepalived&#xff08;调度器&#xff09;&#xff1a;192.168.188.128 真实服务器rs1&#xff1a;192.168.188.129 真实服务器rs1&#xff1a;192.168.188.127 VIP &#xff1a;192..168.188.110 yum -y install keepalived (不需要安装ipvsadm&…

添加时,时间格式明明和数据库格式一样,却一直在报错,存不进去

数据库用的date&#xff0c;然后我前台也用的date格式&#xff0c;却存不进去&#xff0c;我还以为是缓存问题&#xff0c;然后一直在清缓存&#xff0c;结果没啥用&#xff0c; 后来在实体类加了DateTimeFormat这个注解&#xff0c;成功解决。

freemarker页面读取时间date类型报错

以前写过一篇添加时间添加失败的问题&#xff0c;现在我又发现了另外一个问题 刚开始我是这样放进页面&#xff0c;然后就报错&#xff0c;说freemarker的类型错误。我就去控制器打印输出这个时间&#xff0c;发现是有值得&#xff0c;但不是yyyy-mm-dd格式的&#xff0c;我数…