bzoj2194
http://www.lydsy.com/JudgeOnline/problem.php?id=2194
卷积。。。
卷积并不高深,其实卷积就是两个多项式相乘的系数,但是得满足一点条件,就是f[n]=a[i]*b[n-i],就是下标和固定。。。然后这道题下标和不固定,但是我们把b反过来,就是一个卷积了。每次和是固定的
但是输出的时候得输出从n-2n,因为c[n+k]=a[i]*b[n+k-i],n<=n+k<=2*n
#include<bits/stdc++.h>
using namespace std;
#define pi acos(-1)
const int N = ;
complex<double> a[N], b[N];
int n, m, l;
int r[N];
void fft(complex<double> *a, int f)
{
for(int i = ; i <= n; ++i) if(i < r[i]) swap(a[i], a[r[i]]);
for(int i = ; i < n; i <<= )
{
complex<double> w(cos(pi / i), f * sin(pi / i));
for(int p = i << , j = ; j <= n; j += p)
{
complex<double> t(, );
for(int k = ; k < i; ++k, t = t * w)
{
complex<double> x = a[j + k], y = t * a[j + k + i];
a[j + k] = x + y; a[j + k + i] = x - y;
}
}
}
}
int main()
{
scanf("%d", &n); --n;
for(int i = ; i <= n; ++i)
{
int x, y; scanf("%d%d", &x, &y); a[i] = x; b[n - i] = y;
}
m = * n; for(n = ; n <= m; n <<= ) ++l;
for(int i = ; i <= n; ++i) r[i] = (r[i >> ] >> ) | ((i & ) << (l - ));
fft(a, ); fft(b, );
for(int i = ; i <= n; ++i) a[i] = a[i] * b[i];
fft(a, -);
for(int i = m / ; i <= m; ++i) printf("%d\n", (int)(a[i].real() / n + 0.5));
return ;
}
bzoj2194的更多相关文章
- bzoj2194 快速傅立叶之二 ntt
bzoj2194 快速傅立叶之二 链接 bzoj 思路 对我这种和式不强的人,直接转二维看. 发现对\(C_k\)贡献的数对(i,j),都是右斜对角线. 既然贡献是对角线,我们可以利用对角线的性质了. ...
- 【BZOJ2194】快速傅立叶之二
[BZOJ2194]快速傅立叶之二 Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. ...
- [bzoj2194]快速傅立叶之二_FFT
快速傅立叶之二 bzoj-2194 题目大意:给定两个长度为$n$的序列$a$和$b$.求$c$序列,其中:$c_i=\sum\limits_{j=i}^{n-1} a_j\times b_{j-i} ...
- bzoj2194: 快速傅立叶之二
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- bzoj2194 快速傅里叶之二
题意:对于k = 0 ... n求 解: 首先把i变成从0开始 我们发现a和b的次数(下标)是成正比例的,这不可,于是反转就行了. 反转b的话,会发现次数和是n + k,这不可. 反转a就很吼了. 这 ...
- 2018.11.18 bzoj2194: 快速傅立叶之二(fft)
传送门 模板题. 将bbb序列反过来然后上fftfftfft搞定. 代码: #include<bits/stdc++.h> #define ri register int using na ...
- 【bzoj2194】快速傅立叶之二 FFT
题意:给定序列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 ...
- bzoj千题计划256:bzoj2194: 快速傅立叶之二
http://www.lydsy.com/JudgeOnline/problem.php?id=2194 相乘两项的下标 的 差相同 那么把某一个反过来就是卷积形式 fft优化 #include< ...
- BZOJ2194: 快速傅立叶之二(NTT,卷积)
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1776 Solved: 1055[Submit][Status][Discuss] Descript ...
- BZOJ2194:快速傅立叶之二(FFT)
Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...
随机推荐
- Vijos P1334 NASA的食物计划
解法 二维费用01背包问题 解法就是先枚举物品再枚举条件这里两个条件所以要枚举两个for 代码 #include <bits/stdc++.h> using namespace std; ...
- 杂文Python
2.文件操作 文件操作的过程:打开文件获得句柄——>操作文件行(遍历等)——>关闭文件 打开文件获得句柄 比较low的方法: f = open("file_path", ...
- 手机通过Charles用线上域名访问PC本地项目
最近调试微信公众号,由于微信授权需要线上正式环境的域名,笔者想把手机公众号网页重定向到PC本地localhost调试. 该方法通过Charles代理转发,适用所有需要域名重定向的场景,例如手机通过在线 ...
- PyQt5Icon图标(Icon)无法显示问题
PyQt5中设置图标无法显示 以下源码来源PyQt5教程http://zetcode.com/gui/pyqt5/firstprograms/ import sys from PyQt5.QtWidg ...
- vuex----mutation和action的基本使用
我们要实现的很简单,就是点击+1的count加一,点击-1的时候count-1 一.mutation 在vue 中,只有mutation 才能改变state. mutation 类似事件,每一个mu ...
- 处理回车提交、ctrl+enter和shift+enter都不提交->textarea正常换行
<input type="textarea" @on-keypress="handlerMultiEnter"> handlerMultiEnter ...
- Windows学习总结(10)——Windows系统中常用的CMD命令详解
1.ping命令 ping是电脑网络故障诊断中的常用的命令,它的作用是用来检查网络是否通畅或者网络连接速度.我们来看一下PING命令的具体表述. 日常的诊断过程中我们最常用到的就是诊断连接是否通畅. ...
- poj 2114 树的分治 可作模板
/* 啊啊啊啊啊啊啊本题证明一个问题,在实际应用中sort比qsort块 还有memset这类初始化能不加尽量别加,很浪费时间 原来的程序把qsort该成sort,去掉一个无用memset就a了时间不 ...
- [bzoj1232][Usaco2008Nov]安慰奶牛cheer_Kruskal
安慰奶牛 cheer bzoj-1232 Usaco-2008 Nov 题目大意:给定一个n个点,m条边的无向图,点有点权,边有边权.FJ从一个点出发,每经过一个点就加上该点点权,每经历一条边就加上该 ...
- spring-boot-starter-actuator(健康监控)配置和使用
在生产环境中,需要实时或定期监控服务的可用性.Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看.相关功能统计等. 集成: <depen ...