传送门 fftfftfft经典题. 题意简述:给定nnn个长度分别为aia_iai​的木棒,问随机选择3个木棒能够拼成三角形的概率. 思路:考虑对于木棒构造出生成函数然后可以fftfftfft出两个木棒能够生成的边长和的生成函数 注意去重 我们还可以在读入的时候顺便统计出cnticnt_icnti​表示长度≤i\le i≤i的木棒有多少根. 然后可以算出选出3个木棒不能拼成三角形的方案数,简单容斥一下再算出总选法数即可. 代码: #include<bits/stdc++.h> #define…
传送门 题意不好描述(自己看样例解释) 首先可以推出一个递推式:fn=fn−1+2fn−2+1f_n=f_{n-1}+2f_{n-2}+1fn​=fn−1​+2fn−2​+1 然后可以构造两个等式: (fn+fn−1+1)=2(fn−1+fn−2+1)(f_n+f_{n-1}+1)=2(f_{n-1}+f_{n-2}+1)(fn​+fn−1​+1)=2(fn−1​+fn−2​+1) (fn−2fn−1−12)=−(fn−1−fn−12)(f_n-2f_{n-1}-\frac12)=-(f_{n-…
传送门 生成函数基础题. 题意:给出nnn个数以及它们的数量,求从所有数中选出i∣i∈[L,R]i|i\in[L,R]i∣i∈[L,R]个数来可能组成的集合的数量. 直接构造生成函数然后乘起来f(x)=∏i=1n(1+x+x2+...+xtimei)f(x)=\prod_{i=1}^n(1+x+x^2+...+x^{time_i})f(x)=∏i=1n​(1+x+x2+...+xtimei​)然后求出系数即可. 由于模数是1e61e61e6无法nttnttntt,考虑到数据很小可以直接用dpdp…
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源码解析.测试作者:米仓山下时间:2018-10-21机器学习实战(Machine Learning in Action,@author: Peter Harrington)源码下载地址:https://www.manning.com/books/machine-learning-in-actiong…
关于按时间抽取快速傅里叶(FFT)的快速理论深度思考 对于FFT基本理论参考维基百科或百度百科. 首先谈谈FFT的快速何来?大家都知道FFT是对DFT的改进变换而来,那么它究竟怎样改进,它改进的思想在何处呢?明白后,深感奇妙,感悟学习,感悟生活,写下此文,供大家分享之.(文中FFT均讨论按时间抽取快速傅里叶(FFT)) 首先我们来一起看看变换公式,DFT ->FFT(整数 ->奇数 + 偶数) 我自己到这结束也没了解它是怎么把时间变少的,从O(N2)(DFT时间深度)到O(N log2 N)(…
[BZOJ3527]力(FFT) 题面 Description 给出n个数qi,给出Fj的定义如下: \[Fj=\sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i q_j}{(i-j)^2 }\] 令\(Ei=Fi/qi\),求\(Ei\). Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi<1000000000 Output n行,第i行输出Ei.与标准答案误差不超过1…
[BZOJ4827][HNOI2017]礼物(FFT) 题面 Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有 装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它, 但…
前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理都非常到位的总结 推荐ppl巨佬的简明易懂的总结 FFT 多项式乘法的蹊径--点值表示法 一般我们把两个长度为\(n\)的多项式乘起来,就类似于做竖式乘法,一位一位地乘再加到对应位上,是\(O(n^2)\)的 如何优化?直接看是没有思路的,只好另辟蹊径了. 多项式除了我们常用的系数表示法\(y=a_…
[BZOJ4503]两个串(FFT) 题面 给定串\(S\),以及带通配符的串\(T\),询问\(T\)在\(S\)中出现了几次.并且输出对应的位置. \(|S|,|T|<=10^5\),字符集大小为\(26\) 题解 先来考虑没有通配符怎么匹配.别跟我说KMP!! 根据前面几个题目的套路,我们可以把每个字符分开来考虑,然后将\(T\)串反转,将有这个字符的位置变成\(1\),然后\(FFT\),就可以知道在这一段里面这个字符匹配上了多少个,然后把每个字符求个和,检查是否恰好匹配了\(|T|\)…
[BZOJ4259]残缺的字符串(FFT) 题面 给定两个字符串\(|S|,|T|\),两个字符串中都带有通配符. 回答\(T\)在\(S\)中出现的次数. \(|T|,|S|<=300000\) 题解 和两个串基本一样.. 现在\(S\)串中也存在通配符,所以在函数后面再额外乘上一个\(S[i]\)就行了. 拆开式子后是三个卷积的形式. 时间复杂度\(O(nlogn)\) #include<iostream> #include<cstdio> #include<cst…