传送门 模板题. 将bbb序列反过来然后上fftfftfft搞定. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),…
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 O…
bzoj2194 快速傅立叶之二 链接 bzoj 思路 对我这种和式不强的人,直接转二维看. 发现对\(C_k\)贡献的数对(i,j),都是右斜对角线. 既然贡献是对角线,我们可以利用对角线的性质了. 不过右斜角线不太好,我们把每一行都reverse一下,换成左斜角线. 对角线上\(i+j\)相等,可以套上多项式乘法了. 隐藏bug \(a_i,b_i\)均不大于100,而且数字有1e5个 最大值是1e9,而模数是998244353 应该是可以卡掉模数的,但是不故意卡是不可能爆模数的. AC代码…
快速傅立叶之二 bzoj-2194 题目大意:给定两个长度为$n$的序列$a$和$b$.求$c$序列,其中:$c_i=\sum\limits_{j=i}^{n-1} a_j\times b_{j-i}$. 注释:$1\le n\le 10^5$,$0\le a_i,b_i\le 100$. 想法: 显然这是一道$FFT$裸题. 如图: 上面的序列就是$a$序列,下面就是$b$序列. 左图如题意,我们发现当把$b$序列翻转之后就变成了右图的样子,我们设为$d$序列. 我们把$a$序列和$d$序列想…
2194: 快速傅立叶之二 Time Limit: 10 Sec  Memory Limit: 259 MB 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行,每行一个整数,第…
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; ; ); struct node{ double real,imag; ;} node operator +(const node &x){return (node){real+x.real,imag+x.im…
题意:给定序列a,b,求序列c,\(c(k)=\sum_{i=k}^{n-1}a(i)b(i-k)\) Solution: \[ c(k)=\sum_{i=k}^{n-1}a(i)b(i-k)\\ c(k)=\sum_{i=0}^{n-k-1}a(i+k)b(i)\\ 设ar(i)=a(n-i-1)\\ c(k)=\sum_{i=0}^{n-k-1}ar(n-i-k-1)b(i)\\ 可以看出这是个卷积的形式,直接裸套fft \] Code: #include<bits/stdc++.h> #…
http://www.lydsy.com/JudgeOnline/problem.php?id=2194 相乘两项的下标 的 差相同 那么把某一个反过来就是卷积形式 fft优化 #include<cmath> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; <<)+; ); int r[N]; struct Complex { double…
Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1776  Solved: 1055[Submit][Status][Discuss] 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 &…
题目 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. 输入格式 第一行一个整数N,接下来N行,第i+2..i+N-1行,每行两个数,依次表示a[i],b[i] (0 < = i < N). 输出格式 输出N行,每行一个整数,第i行输出C[i-1]. 输入样例 5 3 1 2 4 1 1 2 4 1 4 输出样例 24 12 10 6 1 题解 和2179几乎…
Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #define setIO(s) freopen(s".in","r",stdin) #define maxn 200000 #define pi 3.1415926535898 using namespace std; int len=1,l,r[maxn&…
题目链接 \(Descripiton\) 给定\(A[\ ],B[\ ]\),求\[C[k]=\sum_{i=k}^{n-1}A[i]*B[i-k]\ (0\leq k<n)\] \(Solution\) (先令\(n=n-1\)) 首先往卷积上想.. \(i\)与\(i-k\)的差值是一定的,但是卷积的形式是\[C[k]=\sum_{i=1}^k A[i]*B[k-i]\] 即\(i\)与\(k-i\)的和是一定的. 于是考虑把一个数组反转一下,这里把\(B[\ ]\)反转,那么\[C[k]=…
传送门 这次fftfftfft乱搞居然没有被卡常? 题目简述:给你nnn个数,每三个数ai,aj,ak(i<j<k)a_i,a_j,a_k(i<j<k)ai​,aj​,ak​(i<j<k)组成的所有和以及这些和出现的次数. 读完题直接让我联想到了昨天写过的一道用fftfftfft优化点分治合并的题 ,这不是差不多嘛? 只是这一次的容斥要麻烦一些. 我们令原数列转化成的系数序列为{an}\{a_n\}{an​} 那么如果允许重复答案就应该是an3a_n^3an3​ 然后展…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2194 如果把 a 序列翻转,则卷积得到的是 c[n-i],再把得到的 c 序列翻转即可. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; typedef d…
[题目分析] 咦,这不是卷积裸题. 敲敲敲,结果样例也没过. 看看看,卧槽i和k怎么反了. 艹艹艹,把B数组取个反. 靠靠靠,怎么全是零. 算算算,最终的取值范围算错了. 交交交,总算是A掉了. [代码] #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <map> #include <set> #include <…
[BZOJ2194]快速傅立叶之二 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…
2194: 快速傅立叶之二 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1273  Solved: 745 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 <…
说明: 傅里叶级数.傅里叶变换.离散傅里叶变换.短时傅里叶变换...这些理解和应用都非常难,网上的文章有两个极端:“Esay”  Or  “Boring”!如果单独看一两篇文章就弄懂傅里叶,那说明你真的是大神了. 本博文是经过查阅网上几十篇大神的博客.文章.书籍等进行的一个汇总,希望对初学者和我自己一个入门和总结,所以本博文并非原创,抄袭+汇总+修改+总结! 主要参考: 1.傅里叶变换到小波变换的风趣讲解:https://zhuanlan.zhihu.com/p/22450818 2.一篇外文的…
多项式 系数表示法 设\(f(x)\)为一个\(n-1\)次多项式,则 \(f(x)=\sum\limits_{i=0}^{n-1}a_i*x_i\) 其中\(a_i\)为\(f(x)\)的系数,用这种方法计算两个多项式相乘(逐位相乘)复杂度为\(O(n^2)\) 点值表示法 根据小学知识,一个\(n-1\)次多项式可以唯一地被\(n\)个点确定 即,如果我们知道了对于一个多项式的\(n\)个点\((x_1,y_1),(x_2,y_2)--(x_n,y_n)\) 那么这个多项式唯一满足,对任意\…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2194 给出序列\(a[0],a[1],...,a[n-1]\)和\(b[0],b[1],...,b[n-1]\). \(c[k]=\sum_{i=k}^{n-1}a[i]b[i-k]\). 求序列\(c[]\). 分析 这题就是BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)的后半段... 我们来重新分析一下. 首先我们要知道卷积的标准形式: $$c[i]=\sum_{j=0}…
1.基于struts.xml 的节点参数配置 package节点 action节点 result节点 include节点 2.struts常量配置以及如何修改为自己的想要的配置 2.1struts默认常量位置 2.2修改成自己的配置文件方法(方法先后也是加载顺序,后加载的会覆盖前面的) 方法一(重点) 在struts.xml文件的struts节点下面新增加一个节点 方法二 在src目录下面新建一个File文件名字是struts.properties 然后参考default.properties的…
随便代换一下把它变成多项式乘法,及$C[T]=\sum_{i=0}^{T}A[i]×B[T-i]$这种形式,然后FFT求一下就可以啦 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define read(x) x=getint() using namespace std; const int N = 400003; const double Pi = acos(…
http://www.lydsy.com/JudgeOnline/problem.php?id=2194 题意:求$c[k]=\sum_{k<=i<n} a[i]b[i-k], n<=10^5$ #include <bits/stdc++.h> using namespace std; struct cp { double x, y; cp(double _x=0, double _y=0):x(_x),y(_y) {} cp operator+(const cp &…
题目大意:给定序列a,b,求序列c满足c[k]=sigma(a[i]*b[i-k]) (k<=i<n).(n<=10^5) 思路:观察发现就是普通的卷积反一反(翻转ab其中一个后做卷积,倒着输出即可),FFT模板复习. #include<cstdio> #include<cmath> #include<algorithm> using namespace std; inline int read() { int x;char c; '); )+(x&l…
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 O…
看别的blog好像我用了比较麻烦的方法-- (以下的n都--过 \[ c[i]=\sum_{j=i}^{n}a[i]*b[j-i] \] 设j=i+j \[ c[i]=\sum_{j=0}^{n-i}a[i+j]*b[i+j-i] \] \[ c[i]=\sum_{j=0}^{n-i}a[i+j]*b[j] \] 再设j=n-i-j \[ c[i]=\sum_{n-i-j}^{n-i}a[n-i-j+i]b[n-i-j] \] \[ n-i-j \geq 0 \Rightarrow j \leq…
$$\begin{eqnarray}&c[k] = \sum_{i}^{n}a[i]b[i-k] \\&c[k] = \sum_{i}^{n}a[n-i]b[i-k] (倒序保存a) \\&c[n-k]= \sum_{i}^{n}a[n-i]b[i-k] (倒序保存c) \\&通过卷积 o (nlog(n))得到c\end{eqnarray}$$ #include<bits/stdc++.h> using namespace std; const int N=1…
传送门 fftfftfft套路题. 我们把aaa ~ zzz映射成111 ~ 262626,然后把∗*∗映射成000. 考虑对于两个长度都为nnn的字符串A,BA,BA,B. 我们定义一个差异函数dist(A,B)=∑i=1n(ai−bi)2aibidist(A,B)=\sum_{i=1}^n(a_i-b_i)^2a_ib_idist(A,B)=∑i=1n​(ai​−bi​)2ai​bi​其中a,ba,ba,b是A,BA,BA,B的字符的映射值. 然后如果dist(A,B)=0dist(A,B)…
传送门 fftfftfft一眼题(其实最先想到的是nttnttntt,wawawa了几次之后发现模数不够大果断弃疗写fftfftfft) 我们点分治统计答案的个数. 考虑现在已经统计出了到当前点的所有距离如何更新答案. 显然如果两个距离能够凑出一个质数的话就对答案有1的贡献. 所以相当于计算出每一个距离的个数. 然后可以推一个式子: tota=∑i=0maxdiscnti∗cnta−itot_a=\sum_{i=0}^{maxdis}cnt_i*cnt_{a-i}tota​=∑i=0maxdis…
传送门 NOIpNOIpNOIp爆炸不能阻止我搞oioioi的决心 信息技术课进行一点康复训练. fftfftfft板题. 代码: #include<bits/stdc++.h> using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^…