10天都过去了 4天都在全程懵逼。。

怎么可以这么难啊 我服了 现在想起依稀只记得一些结论 什么 反演? 什么后缀自动机?什么组合数的应用?什么神仙东西 ,不过讲课人的确都是神仙。(实名羡慕。

mzx 学长讲的每次都是这么亲民 哇哦 感觉比较舒服的课程 因为比较简单 也给我这个蒟蒻 好好理解了一下指数型生成函数(母函数) 还有一些以前不懂的概念 现在都清晰 了很多了。

多项式 即函数 中附带一个x 的多次幂的东西。卷积 就是两个函数相乘 生成另一个函数的东西。

所以说 这叫做多项式的乘法 当然多项式还有加法 减法 除法 自然除法也是有逆元的 多项式逆元 求出来我们就可以完成操作了。

学长:当发现一个多项式有一点复杂的时候 我们可以求出其逆元 然后 再倒回来 会发现式子变得简单很多。

然后讲了 生成函数和dp 之间的联系 其实我觉得表现形式不太一样剩下的都还好。

ps:学了一发怎样求导 学了一发泰勒展开逼近函数式。

多项式的乘法 也就是 其卷积 复杂度一般为nm  然后FFT 可以优化到(n+m)log(n+m)大致就是这个复杂度。

这样的话对于一类题目 我们把 一些dp 通过生成函数的形式 转换成多项式然后进行多项式乘法快速递推从而推出答案 这是极大的优化。

上午的具体内容就这么多 当然 多项式的化简也很重要 不过一般都是 泰勒展开 逼近 化简 什么的 或者求逆 再倒 这样也能达到化简目的 。注:bzoj  3028 生成函数好题。

现在说一下FFT 吧快速傅里叶变换。。

显然的是 我们直接卷积 是nm 的 这里考虑 利用插值法求出我们的 卷积也就是 生成的另一个函数。那么插值 则需要生成点。

那么我们的DFT 算法就有了 生成点(n+1)个 n^2 合在一起 O(n) 拉格朗日插值快速求 n^2

当然 下午 学长给我们讲了FFT 理解的还行 用到了以前学习的知识总算没有学(这个电脑的输入法都快把我惹火了 受不了)

一些事情 我心情也很不好,别惹我,我会咬人的。 (遇到了老同学 殊途异路 同是天涯沦落人 相逢何必曾相识

FFT DFT 的时候使用复数的单位根 然后 矩阵求逆的时候再次使用单位根 这样 复杂度都是nlogn 所以这也是FFT 的 精妙之处。

首先是求值 显然的是 我们现在是已知系数 一直 自变量 要求 f值 求值得过程 我们将各个系数进行分治 注意这里的递归logn 只是为了求出各个f值而分治的 由单位根可知。

关于 FFT 函数中的东西 我们必须要明白 系数阵*x=值 我们由FFT 的x不断的^2 可以缩小 至其他的x 将会被我们以圆的方式转到。

这便是我对FFT 的理解。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define db double
using namespace std;
//FFT author :Chdy
const int MAXN=;
const db pi=acos(-1.0);
int n,m,h,t;
struct wy
{
db v,r;
inline wy friend operator +(const wy x,const wy y){return (wy){x.v+y.v,x.r+y.r};}
inline wy friend operator -(const wy x,const wy y){return (wy){x.v-y.v,x.r-y.r};}
inline wy friend operator *(const wy x,const wy y){return (wy){x.v*y.v-x.r*y.r,x.r*y.v+y.r*x.v};}
}a[MAXN],b[MAXN],tmp[MAXN];
int R[MAXN];
inline void FFT(wy *a,int len,int f)
{
if(len==)return;
for(int i=;i<len/;++i)
{
tmp[i]=a[i<<];
tmp[i+(len>>)]=a[i<<|];
}
for(int i=;i<len;++i)a[i]=tmp[i];
FFT(a,len>>,f);FFT(a+(len>>),len>>,f);
wy wn={cos(*pi/len),f*sin(*pi/len)},w={,};
for(int i=;i<len/;++i)
{
wy x=a[i],y=w*a[i+len/];
a[i]=x+y;a[i+len/]=x-y;
w=w*wn;
}
}
int main()
{
freopen("1.in","r",stdin);
ios::sync_with_stdio(false);
cin>>n>>m;++n;++m;
for(int i=;i<n;++i)cin>>a[i].v;
for(int j=;j<m;++j)cin>>b[j].v;
for(h=t=;t<(n+m-);t=t<<)++h;
//for(int i=1;i<t;++i)R[i]=
FFT(a,t,);FFT(b,t,);
for(int i=;i<t;++i)a[i]=a[i]*b[i];
FFT(a,t,-);
for(int i=;i<n+m-;++i)cout<<(int)(a[i].v/t+0.5)<<' ';
return ;
}

2019 HL SC day10的更多相关文章

  1. 2019 HL SC day1

    今天讲的是图论大体上分为:有向图的强连通分量,有向图的完全图:竞赛图,无向图的的割点,割边,点双联通分量,变双联通分量以及圆方树 2-sat问题 支配树等等. 大体上都知道是些什么东西 但是仍需要写一 ...

  2. 2019 HL SC day4

    自闭场本来 以为 顶多一些不太会 结果发现 一堆不太会 . 树状数组  感觉 好久没看 了有点遗忘 不过还好 现在我来了.莅临之神将会消灭一切知识点哦. 今天说点不一样东西 树状数组 hh 很有用的东 ...

  3. 2019 HL SC day2

    今天讲的是网络流 大部分题目都写过了 这里 就总结一番. bzoj 1066 裸的最大流 不过需要拆点细节方面有一点坑 剩下的 没什么了. //#include<bits/stdc++.h> ...

  4. Solr分组查询

     项目中需要实时的返回一下统计的东西,因此就要进行分组,在获取一些东西,代码拿不出来,因此分享一篇,还是很使用的. facet搜索 /** * * 搜索功能优化-关键词搜索 * 搜索范围:商品名称.店 ...

  5. 正睿2019省选附加赛 Day10 (这篇其实已经都咕咕了...)

    目录 2019.3.13 A.算算算(二项式定理 斯特林数) B.买买买 C.树树树 2019.3.13 比赛链接 A.算算算(二项式定理 斯特林数) 题目链接 \(x^k\)可以用二项式定理展开,需 ...

  6. Python脱产8期 Day10 2019/4/24

    一 函数 1.定义:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数>>工具. 2.函数的优点:1.避免代码的冗余:2.让程序结构代码更加清晰:3.让代码更加具 ...

  7. 正睿 2019 省选附加赛 Day10

    A 核心就是一个公式 \[\sum_{i = 0}^{k} S(k, i) \tbinom{x}{i} i\] S是第二类斯特林数 递推公式 \(S_2(n,k)=S_2(n−1,k−1)+kS_2( ...

  8. 2019 7 8 HL 模拟赛

    今天 很不爽 昨天晚上没有睡好觉 大约2点才睡着吧 反正翻来覆去睡不着 不知道为什么可能可行流 或者可行费用流并没有深刻理解 .我不会写 让我心情非常的焦躁. 大凶 顺理成章的被3位强者吊着锤(妈呀我 ...

  9. 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈

    本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...

随机推荐

  1. HBase写入异常RejectedExecutionException

    HBase在大数据量并发写入时,写一段时间后HBase监控界面出现告警,写入程序日志里频繁出现异常java.util.concurrent.RejectedExecutionException: 从异 ...

  2. 2020最新的Spring Boot 分布式锁的具体实现(内附代码)

    前言 面试总是会被问到有没有用过分布式锁.redis 锁,大部分读者平时很少接触到,所以只能很无奈的回答 "没有".本文通过 Spring Boot 整合 redisson 来实现 ...

  3. day58 前端收尾

    目录 一.jQuery结束 1 阻止后续事件执行 2 阻止事件冒泡 3 事件委托 4 页面加载 5 动画效果 6 补充知识点 二.前端框架Bootstrap 1 布局容器 2 栅格系统 3 栅格参数 ...

  4. CSS 的层叠上下文是什么

    层叠上下文是 HTML 中的一个三维的概念,每个层叠上下文中都有一套元素的层叠排列顺序.页面根元素天生具有层叠上下文,所以整个页面处于一个“层叠结界”中. 层叠上下文的创建: 页面根元素:html z ...

  5. java 基本语法(十三) 数组(六)数组的常见异常

    1.数组角标越界异常:ArrayIndexOutOfBoundsException int[] arr = new int[]{1,2,3,4,5}; // for(int i = 0;i <= ...

  6. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  7. 用Python演奏音乐

    目录 背景 准备 安装mingus 下载并配置fluidsynth 下载soundfont文件 分析 乐谱格式 乐谱解析 弹奏音乐 添加伴奏 保存音乐 完整程序 背景 笔者什么乐器也不会,乐理知识也只 ...

  8. bzoj4300绝世好题

    bzoj4300绝世好题 题意: 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0.n≤100000,ai≤10^9. 题解: 用f[i]表示当前二进制i为1 ...

  9. Docker基础使用

    Docker篇 CentOS 安装Docker - 菜鸟教程 安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更 ...

  10. 基于python的自动化测试简介【十年从业大佬】

    一.自动化测试包括以下几个方面: 1. 常用测试工具: (1)QTP:主要用于回归测试和测试同一软件的新版本 (2)Robot Framwork:python编写的功能自动化测试框架,具有良好的可扩展 ...