[luogu P5349] 幂 解题报告 (分治FFT)】的更多相关文章

interlinkage: https://www.luogu.org/problemnew/show/P5349 description: solution: 设$g(x)=\sum_{n=0}^{∞}n^xr^n$ $rg(x)=\sum_{n=0}^{∞}n^xr^{n+1}=\sum_{n=1}^{∞}(n-1)^xr^n$ $g(x)=\sum_{n=1}^{∞}n^xr^n(x>0)$(注意$x>0$这个条件,$x=0$的时候这个不符合) $(1-r)g(x)=\sum_{n=1}…
[九度OJ]题目1474:矩阵幂 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1474 题目描述: 给定一个n*n的矩阵,求该矩阵的k次幂,即P^k. 输入: 输入包含多组测试数据. 数据的第一行为一个整数T(0<T<=10),表示要求矩阵的个数. 接下来有T组测试数据,每组数据格式如下: 第一行:两个整数n(2<=n<=10).k(1<=k<=5), 两个数字之间用一个空格隔开,含义如上所示. 接下来…
分治FFT的板子为什么要求逆呢 传送门 这个想法有点\(cdq\)啊,就是考虑分治,在算一段区间的时候,我们把他分成两个一样的区间,然后先做左区间的,算完过后把左区间和\(g\)卷积一下,这样就可以算出左区间里的\(f\)对右边的贡献,然后再算右边的就好了. 手玩一组样例吧:g=[0,3,1,2](默认\(g[0] = 0\)) 一开始,只有f[0]=1 f: [1 0|0 0] 然后我们从中间分开来,先算左边的 f: [1|0|0 0] 然后在分下去我们会找到\(f[0]\),就拿这一段和\(…
题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注:本题解大部分摘自Imagine大佬提供在洛谷的题解 我们设$f(x)$表示最小循环节长度为x的合法序列数,那么有$ans=\sum_{d|gcd(n,m)}\frac{1}{d}f(d)$ 这是因为最小循环节为d的序列对应的环会被计算d次,比如 0101,最小循环节长度为 2(循环节为 01),其对…
还不会这题的多项式求逆的算法. 发现每一项都是一个卷积的形式,那么我们可以使用$NTT$来加速,直接做是$O(n^2logn)$的,我们考虑如何加速转移. 可以采用$cdq$分治的思想,对于区间$[l, r]$中的数,先计算出$[l, mid]$中的数对$[mid + 1, r]$中的数的贡献,然后直接累加到右边去. 容易发现,这样子每一次需要用向量$[l,l + 1, l +  2, \dots, mid]$卷上$g$中$[1, 2, \dots, r - l]$. 时间复杂度$O(nlog^…
大力数学题,发现自己好久没写多项式水平急速下降,求逆都要写挂233 首先看到关于多项式的等比数列求和,我们容易想到先求出每一项的系数然后最后累加起来即可,即设\(f_i=\sum_{n=0}^{\infty} n^kr^n\),那么最后\(ans=\sum_{i=0}^m a_if_i\) 然后你直接去OEIS就找到了它的生成函数,一波搞定233 好了我们认真开始推式子,\(f_i=\sum_{n=0}^{\infty} n^kr^n\) \(r\cdot f_i=\sum_{n=1}^\inf…
题目链接: https://www.luogu.org/problemnew/show/P4197 题目: 在Bytemountains有N座山峰,每座山峰有他的高度$h_i$.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走 现在有Q组询问,每组询问从点v开始只经过困难值小于等于x的路径所能到达的山峰中第k高的山峰,如果无解输出-1. 在线做法题解: 一句话题解:kruskal重构树dfs序上建主席树直接查询第k大即可 知识点拓展: 下面讲讲kruskal重构…
题目链接:https://www.luogu.org/problemnew/show/P3360 题解: 首先我们把边上的消耗放到向下的点上,如果是叶子节点的话就先做一次0/1背包 发现这是一颗二叉树,转移的时候枚举给左儿子多少时间,右儿子多少时间就好 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> typedef long long ll; using st…
题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==prime]​$ 题解: 解法一:莫比乌斯反演套路题 其实这样就可以了,但是还可以优化一下子 设​​T=dp ​ 整除分块就好了,其实这就和 yy的gcd 一样了 解法二:欧拉函数 考虑上面的第一个式子​可以化简成 ​ tot是n以内质数的数量 这是因为考虑到每次都两次计算了​$\varphi(1)$…
1008: [HNOI2008]越狱 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(10…
题目:https://www.luogu.org/problemnew/show/P4721 分治FFT:https://www.cnblogs.com/bztMinamoto/p/9749557.html https://blog.csdn.net/VictoryCzt/article/details/82939586 不知为何自己的总是很慢. 觉得是 n 和 m 表示次数的话,len<=n+m:n 和 m 表示项数的话,len<n+m:应该是这样? 这里是 mid-L+1 项和 R-L+1…
P4721 [模板]分治 FFT 题目背景 也可用多项式求逆解决. 题目描述 给定长度为 \(n−1\) 的数组 \(g[1],g[2],\dots,g[n-1]\),求 \(f[0],f[1],\dots,f[n-1]\),其中\(f[i]=\sum_{j=1}^if[i-j]g[j]\) 边界为 \(f[0]=1\) .答案模 \(998244353\) . 输入输出格式 输入格式: 第一行一个正整数 \(n\) . 第二行共 \(n−1\) 个非负整数 \(g[1],g[2],\dots,…
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s 题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场.道路i连接农场A_i和B_i…
[Luogu5349]幂(分治FFT) 题面 洛谷 题解 把多项式每一项拆出来考虑,于是等价于要求的只有\(\sum_{i=0}^\infty i^kr^i\). 令\(f(r)=\sum_{i=0}^\infty i^k r^i\),那么\(rf(r)=\sum_{i=0}^\infty r i^k r^i\). 这里默认\(a^k=0\),\(k=0\)的时候特殊处理一下就行了. 然后就可以得到: \[\begin{aligned} (1-r)f_k(r)&=\sum_{i=0}^\inft…
HNOI 2010 解题报告 0. HNOI2010 AC代码包下载地址 注: 戳上面的标题中的'地址' 下载 代码包, 戳下面每一题的文件名 可进入 题目链接. 每一题 对应代码的文件名 我在 每一题题解的标题旁 备注了. 提醒:请不要直接 \(Copy\) 我的代码,代码仅供用于题目理解与对拍. 1. [HNOI2010]弹飞绵羊\(\ \)(Sheep.cpp) 比较简单的一题.解法有\(INF\)种,这里给两种: ( 1 ) \(LCT\)维护链长,对边界外(\(>n\))开一虚点\(S…
题面: 看无可看(see.pas/cpp/c) 题目描述 “What’s left to see when our eyes won’t open?” “若彼此瞑目在即,是否终亦看无可看?” ------来自网易云音乐<Golden Leaves-Passenger> 最后的一刻我看到了...... 一片昏暗? 我记起来了, 我看到,那里有一个集合S,集合S中有n个正整数a[i](1<=i<=n) 我看到,打破昏暗的密码: 记忆中的f是一个数列,对于i>1它满足f(i)=2*…
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 写在前面 一些约定 循环卷积 DFT卷积的本质 Bluestein's Algorithm 例题 分治FFT 例题 FFT的弱常数优化 复杂算式中减少FFT次数 例题 利用循环卷积 小范围暴力 例题 快速幂乘法次数的优化 FFT的强常数优化 DF…
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不含起点和终 点的岩石).在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点.为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳 跃距离尽可能长.由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能 移走起点和终点的岩石). 格式 输入格式…
题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于错误的判断还不够严厉. 对边界情况的讨论其实应该是思维严密的表现,当然这并不能表明我写的一点错误都没有,只是多多分析一下还是很有好处的. #include <iostream> #include <fstream> #include <string> #include &l…
声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载.可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站点,因此,笔者加入此条声明. 郑重声明:这篇记录<id=667" target="_blank" style="word-wrap:break-word; word-break:normal; margin:0px; padding:0px; color:rgb(…
我要是没记错的话,今天的题难度算挺适中的. *标程来自高天宇哥哥 T1:小G的字符串 题目描述 有一天,小 L 给小 G 出了这样一道题:生成一个长度为 n 的.全由小写英文字母构成的字符串,只能使用 k 种字母.要求满足: 字符串中相邻的两个字母不能相同. 必须出现恰好 k 种不同的字母. 这样的合法字符串可能有很多,小 L 让小 G 输出字典序最小的那个. 小 G 太笨啦,不会做这道题,希望你帮帮他. 输入格式 输入文件只有两个数字 n; k,含义如题. 输出格式 输出文件共一行,输出合法的…
GX/GZOI2019 day2 解题报告 题目链接 逼死强迫症 旅行者 旧词 t1 逼死强迫症 显然地,记 \(f(i)\) 为长度为 \(i\) 的木板的答案,可得: \(\\\) \[f(i)=\begin{cases} 0 \quad ······························ \quad (i \in [0,2]) \\ f(i-1)+f(i-2)+2 \times pre(i-3) \quad ·· \quad ( i \in [3,+\infty])) \end{…
「ZJOI2016」解题报告 我大浙的省选题真是超级神仙--这套已经算是比较可做的了. 「ZJOI2016」旅行者 神仙分治题. 对于一个矩形,每次我们从最长边切开,最短边不会超过 \(\sqrt{n\times m}\),所以对于每个点跑一遍最短路就行了. 时间复杂度 \(O(n\sqrt{n}\log n+q\sqrt{n})\) \(Code\ Below:\) #include <bits/stdc++.h> #define id(i,j) (((i)-1)*m+(j)) using…
一般的分治FFT是指: https://www.luogu.org/problemnew/show/P4721 考虑后面的f和前面的f有关系,但是贡献可以分着计算,逐一累计上去. 考虑cdq分治.算出前面的[1,mid]的f之后,可以直接一次NTT,把后面[mid+1,r]的f的一部分算出来,累加上去. 对于后面的部分,发现都是一个前缀没有计算上.继续分治下去即可. 画个图就是这样. 细节注意: 1.边界, 2.0~n-1 3.四倍N的数组 4.注意之后每次都是NTT一个前缀. #include…
图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Journey poj1724 - ROADS(邻接表+DFS) BFS poj3278 - Catch That Cow(空间BFS) poj2251 - Dungeon Master(空间BFS) poj3414 - Pots poj1915 - Knight Moves poj3126 - Prim…
[解题报告]洛谷 P2571 [SCOI2010]传送带今天无聊,很久没有做过题目了,但是又不想做什么太难的题目,所以就用洛谷随机跳题,跳到了一道题目,感觉好像不是太难. [CSDN链接](https://blog.csdn.net/Liang_Si_FFF/article/details/84570359)[题目链接](https://www.luogu.org/problemnew/show/P2571) ===========================================…
题目链接:https://www.luogu.org/problemnew/show/P4721 总结了一下蒟蒻FFT/NTT容易写错的地方: ​ 1.rev数组求错. ​ 2.cdq注意顺序:先递归左, 处理左对右的影响,再递归右.(注意!这需要考虑到分治fft的原理!) ​ 3.初始a数组忘了取模等各种忘取模. ​ 4.NTT第二层循环i+=(1<<j)而不是i+=j ​ 5.y=gnk*a[k+j]而不是a[k+j]. 接下来是AC代码 (打//标志的是曾经与现在本蒟蒻FFT写错的地方)…
Link Solution 有两种解法. 法1: 直接上分治FFT,也就是CDQ分治+FFT. 具体做法是先递归左半边,算出左半边答案之后,将左半边贡献到右半边,然后递归右半边. 分治是一个log的,每次暴力计算贡献是\(\text O(n^2)\)的,考虑用FFT优化计算贡献的过程.总复杂度变成\(\text O(n{log_n}^2)\). 需要注意:因为只算左半边对右半边的贡献,所以f数组右半边应置为0. 法2: 设 \(F(x)=\sum\limits_{i=0}^{\infty}f[i…
P4721 [模板]分治 FFT 链接 luogu 题目描述 给定长度为 \(n-1\) 的数组 \(g[1],g[2],..,g[n-1]\),求 \(f[0],f[1],..,f[n-1]\),其中 \[f[i]=\sum_{j=1}^if[i-j]g[j]\] 边界为 \(f[0]=1\) .答案模 \(998244353\) . 思路 分治+ntt.跑900+ms 其实limit只要设到区间长度就可以了,其他的是用不到的.对前半部分也没得影响. 代码 #include <bits/std…
目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普及组的复赛的,不过当时成绩垃圾的一批.只混到一个三等奖...... 今天老师又给考了一遍noip2018普及的题,结果第三题还是不太会,卧槽.....这.....不过我竟然用暴力dfs+剪枝过了(只是在网上luogu过了,本地TLE下面会说到的,咕咕咕) 下面是正式的解题报告: 标题统计 题目链接…