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. Java桌面应用程序打包

    IDEA环境生成Jar 设置配置 File -> Project Structure -> Artifacts -> + -> JAR -> From modules w ...

  2. td文字溢出显示省略号

    昨天遇到移动端表格td中文字溢出问题,写了溢出隐藏样式,居然没起作用! { overflow:hidden;//溢出隐藏 white-space:nowrap;//文字不换行 text-overflo ...

  3. 洛谷 P3627 [APIO2009]抢掠计划 Tarjan缩点+Spfa求最长路

    题目地址:https://www.luogu.com.cn/problem/P3627 第一次寒假训练的结测题,思路本身不难,但对于我这个码力蒟蒻来说实现难度不小-考试时肛了将近两个半小时才刚肛出来. ...

  4. JS中同步和异步

    首先,我们要知道,JavaScript的本质是一门浏览器脚本语言,在执行的时候是一行一行的执行,只有前面的代码执行完了才会执行后面的代码.JS是单线程语言指的就是这个意思. 同步和异步其实在进行任务执 ...

  5. SQL注入笔记-updatexml与extractvalue

    0x1介绍 MySQL 5.1.5版本中添加了对XML文档进行查询和修改的函数 EXTRACTVALUE(XML_document, XPath_string); UPDATEXML(XML_docu ...

  6. Set 和 Map

    1. 数组去重 <script type="text/javascript"> [...new Set(array)] </script> 2. 条件语句的 ...

  7. 05 drf源码剖析之认证

    05 drf源码剖析之认证 目录 05 drf源码剖析之认证 1. 认证简述 2. 认证的使用 3. 源码剖析 4. 总结 1. 认证简述 当我们通过Web浏览器与API进行交互时,我们可以登录,然后 ...

  8. Django之 url组件

    本节内容 路由系统 models模型 admin views视图 template模板 路由系统 我们已知,用户从浏览器发出的请求会首先打到django url的路由分发系统这里,然后再到views视 ...

  9. Linux驱动之I2C总线设备以及驱动

    [ 导读] 本文通过阅读内核代码,来梳理一下I2C子系统的整体视图.在开发I2C设备驱动程序时,往往缺乏对于系统整体的认识,导致没有一个清晰的思路.所以从高层级来分析一下I2C系统的设计思路,将有助于 ...

  10. [Cordova-IOS]JavaScript与Swift交互

    [Cordova-IOS]Swift调用JavaScript中的函数 概述 Cordova中,通过插件的形式可以实现JavaScript与Swift的交互,关于Cordova插件的定义以及Swfit如 ...