LINK:多项式 exp 做多项式的题 简直在嗑药. 前置只是 泰勒展开 这个东西用于 对于一个函数f(x) 我们不好得到 其在x处的取值. 所以另外设一个函数g(x) 来在x点处无限逼近f(x). 具体的 \(f(x) ≈ g(x)=g(0)+\frac{f^1(0)}{1!}x+\frac{f^2(0)}{2!}x^2+...+\frac{f^n(0)}{n!}x^n\) 牛顿迭代: 常用来求一个函数的零点:假设我们已经求得一个近似值x0 那么我们只需要过(x0,f(x0))这个点做函数图像…
题意 题目链接 Sol 多项式exp,直接套泰勒展开的公式 \(F(x) = e^{A(x)}\) 求个导\(F'(x) = A(x)\) 我们要求的就是\(G(f(x)) = lnF(x) - A(x)\)的零点. 然后把\(F(x)\)看做变量\(A(x)\)看做长度(什么鬼啊qwq) \(G'(F(x)) = \frac{1}{F(x)}\) 然后就可以牛顿迭代啦 \[F(x) = F_0(x) - \frac{G(F_0(x))}{G'(F_0(x))}\] \[F(x) = F_0(x…
手动博客搬家: 本文发表于20181127 08:39:42, 原地址https://blog.csdn.net/suncongbo/article/details/84559818 题目链接: https://www.luogu.org/problem/show?pid=4726 题意: 给定\(n\)次多项式\(A(x)\) 求多项式\(f(x)\)满足\(f(x)\equiv e^{A(x)} (\mod x^n)\) 题解 这个比对数函数复杂一些.. 前铺知识 泰勒展开 对于一个函数,我…
补补补…… 这个题的解法让我认识到了泰勒展开的美妙之处. 泰勒展开 泰勒展开就是用一个多项式型的函数去逼近一个难以准确描述的函数. 有公式 $$f(x)\approx g(x) = g(x_0) + \frac{g'(x_0)}{1!}(x - x_0) + \frac{g^{(2)}(x_0)}{2!}(x - x_0)^2 + \cdots + \frac{g^{(n)}(x_0)}{n!}(x - x_0)^n$$ 在这里$g^{(n)}$表示$g$的$n$阶导. 在$0$这个点的泰勒展开…
题目大意:给出$n-1$次多项式$A(x)$,求一个 $\bmod{x^n}$下的多项式$B(x)$,满足$B(x) \equiv e^{A(x)}$. 题解:(by Weng_weijie) 泰勒展开:$$f(x)=f(x_0)+\dfrac{f'(x_0)(x-x_0)}{1!}+\dfrac{f''(x_0)(x-x_0)^2}{2!}+\dots$$ 牛顿迭代: $$解关于 F(x) 的方程使得 G(F(x))\equiv 0\pmod{x^n} \\假设 G(F_0(x)) \equi…
牛顿迭代 若 \[G(F_0(x))\equiv 0(mod\ x^{2^t})\] 牛顿迭代 \[F(x)\equiv F_0(x)-\frac{G(F_0(x))}{G'(F_0(x))}(mod\ x^{2^{t+1}})\] 以下多数都可以牛顿迭代公式一步得到 多项式求逆 给定\(A(x)\)求满足\(A(x)*B(x)=1\)的\(B(x)\) 写成 \[A(x)*B(x)=1(mod \ x^n)\] 我们会求\[A(x)*B(x)=1(mod \ x^1)\] 然后我们考虑求\[A…
别问我为啥突然刷了道OI题,也别问我为啥花括号不换行了... 题目描述 求含 $n$ 个碳原子的本质不同的烷基数目模 $998244353$ 的结果.$1\le n\le 10^5$ . 题解 Burnside引理+多项式牛顿迭代 不考虑同构的话,很容易想到dp方程 $\begin{cases}f_0=1\\f_i=\sum\limits_{j+k+l+1=i}f_jf_kf_l\end{cases}$ . 考虑同构,可以通过容斥原理,大力讨论一下容斥系数.一个更简单的方法是考虑Burnside…
传送门. 不妨设\(A(x)\)表示答案. 对于一个点,考虑它的三个子节点,直接卷起来是\(A(x)^3\),但是这样肯定会计重,因为我们要的是无序的子节点. 那么用burnside引理,枚举一个排列,一个环的选择要相同,如果环的大小是y,则对应\(A(x^y)\). 最后可以得到: \(A(x)=x{A(x)^3+3A(x^2)A(x)+2A(x^3)\over 6}+1\) 分治NTT可以解这个方程,不过因为有3次的,比较复杂,考虑用牛顿迭代: \(F(A(x))=x{A(x)^3+3A(x…
[Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include<vec…
多项式总结&多项式板子 三角/反三角是不可能放的(也不可能真香的 多项式乘法(DFT,FFT,NTT,MTT) 背板子 前置知识:泰勒展开 如果\(f(x)\)在\(x_0\)处存在\(n\)阶导,那么 \[f(x)=\sum_{i=0}^{\infty}\frac{f^i(x_0)}{i!}(x-x_0)^i\] 称作\(f(x)\)在\(x_0\)处的泰勒展开. 前置知识:牛顿迭代 有一个\(n-1\)次多项式\(A(x)\),你需要求\(B(x)\)满足\(A(B(x))\equiv 0(…
[luogu P3384] [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将以x为根节点的子树内所有节点值都加上z 操作4: 格式: 4 x 表示求以x为根节点的子树内所有节点值之和 输入输出格式 输入格式: 第一行包含4个正整数…
Luogu P2742 模板-二维凸包 之前写的实在是太蠢了.于是重新写了一个. 用 \(Graham\) 算法求凸包. 注意两个向量 \(a\times b>0\) 的意义是 \(b\) 在 \(a\) 的左侧,于是可以用这个方法判断是否弹点. 写的时候注意细节:确定原点时的比较和排序时的比较是不同的,并且排序时不要把原点加入. #include<bits/stdc++.h> using namespace std; #define ll long long #define mp ma…
luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> #include<algorithm> #include<ctime> #include<queue> #inc…
题目描述 小南一共有\(n\)种不同的玩具小人,每种玩具小人的数量都可以被认为是无限大.每种玩具小人都有特定的血量,第\(i\)种玩具小人的血量就是整数\(i\).此外,每种玩具小人还有自己的攻击力,攻击力可以是任意非负整数,且两种不同的玩具小人的攻击力可以相同.我们把第\(i\)种玩具小人的血量和攻击力表示成\(a_i\)和\(b_i\). 为了让玩具小人们进行战斗,小南打算把一些小人选出来,编成队伍.一个队伍可以表示成一个由玩具小人组成的序列:\((p_1,p_2,\ldots,p_l)\)…
题目链接 \(Description\) 求函数\(F(x)=6\times x^7+8\times x^6+7\times x^3+5\times x^2-y\times x\)在\(x\in \left[0,100\right]\)时的最小值. \(Solution\) \(x\geq 0\)时\(F(x)\)为单峰凹函数,三分即可. 而且由此可知\(F(x)\)的导数应是单增的.函数最值可以转化为求导数零点问题,于是也可以二分求\(F'(x)\)的零点,或者用牛顿迭代求. 峰值函数最值也可…
最近有人贴出BAT的面试题,题目链接. 就是实现系统的开根号的操作,并且要求一定的误差,其实这类题就是两种方法,二分法和牛顿迭代,现在用OC的方法实现如下: 第一:二分法实现 -(double)sqrt_binary:(int)num { double x = sqrt(num); double y = num / 2; double low = 0.0; double up = num; int count = 1; while (fabs(y-x) > 0.000000001) { NSLo…
1038 一元三次方程求解 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1.要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位. 提示:记方程f(x)=0,…
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Description In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be Given your test scores and a positive integer k, d…
思路 按照式子计算即可 \[ F(x)=F_0(x)(1-\ln F_0(x) +A(x)) \] 代码 // luogu-judger-enable-o2 #include <cstdio> #include <cstring> #include <algorithm> #define int long long using namespace std; const int MAXN = 300000; const int G = 3; const int invG…
4725传送门 4726传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar(); r…
题意 题目链接 Sol \(B(x) = \exp(K\ln(A(x)))\) 做完了... 复杂度\(O(n\log n)\) // luogu-judger-enable-o2 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second #defin…
https://www.cnblogs.com/HocRiser/p/8207295.html 安利! #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define P 9982443…
题意: 题解: 这道题我思路大方向是正确的,但是生成函数推错导致一直WA,看了标程才改对-- 首先一个长为\(m\)的轮换的\(n\)次幂会分裂成\(\gcd(n,m)\)个长为\(\frac{m}{\gcd(n,m)}\)的轮换 所以合并的时候相当于对于一个长度\(l\)若存在一个\(m\)使得\(\frac{m}{\gcd(n,m)}=l\)则\(\gcd(n,m)\)个长度为\(l\)的轮换可以合并 显然不同长度的轮换是互不影响的,那么我们可以分开每种长度计算 就相当于对于一个长度为\(l…
题目大意 一行有\(n\)个球,现在将这些球分成\(k\) 组,每组可以有一个球或相邻两个球.一个球只能在至多一个组中(可以不在任何组中).求对于\(1\leq k\leq m\)的所有\(k\)分别有多少种分组方法. 答案对\(998244353\)取模. \(n\leq {10}^9,m<2^{19}\) 题解 因为\(k>n\)的项都是\(0\),所以我们钦定\(m\leq n\) 考虑DP. 记\(f_{i,j}\)为前\(i\)个球分为\(j\)组的方案数. \[ f_{i,j}=f…
ln 解释 设\(g(x)=ln(f(x))\),两边同时求导,则有:\(g'(x)=ln'(f(x))*f'(x)=f^{-1}(x)*f'(x)\)(1) 因为\(f(x)\)是个多项式,所以设\(f(x)=\sum_{i=0}^{n}a_i*x^i\),则有\(f'(x)=\sum_{i=0}^{n-1}a_{i+1}*(i+1)*x^i\) 设\(h(x)=f^{-1}(x)*f'(x)\),对(1)式两边同时求积分,得:\(g(x)=\int h(x)\space dx\) 因为\(h…
题目大意:给你两个多项式$f(x)$和$g(x)$,满足$f(x)=\prod\limits_{i=1}^{n}(a_i+1)$,$g(x)=\prod\limits_{i=1}^{m}(b_i+1)$. 现在给你一个多项式$h(x)$,满足$h(x)=\prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}(a_ib_j+1)$ 请输出多项式$h$的前$k$项,在模$998244353$意义下进行. 数据范围:$n,m≤10^5$. 我们现在有: $f(x)=\…
题目链接 https://www.luogu.org/problem/P5564 题解 这题最重要的一步是读明白题. 为了方便起见下面设环长可以是\(1\), 最后统计答案时去掉即可. 实际上就相当于如果只有树没有环,答案就是卡特兰数第\((n-1)\)项.令\(C(x)\)为Catalan数生成函数,\(T(x)\)为这种树的生成函数,则\(T(x)=xC(x)\). 然后环的话可以考虑Burnside引理,首先枚举环长,枚举置换,易得答案为\(\sum^n_{k=1}\frac{1}{k}\…
传送门: http://codeforces.com/problemset/problem/838/C 题解: 如果一个字符串的排列数是偶数,则先手必胜,因为如果下一层有后手必赢态,直接转移过去,不然,就一直耗着,因为是偶数,所以会让后手进入下一层,则后手必输. 排列数是偶数,打表发现\(|s|\)是奇数时,先手必赢,否则后手必赢,接下来尝试归纳这个结论. |s|<=2时显然成立. 对于\(|S|\)奇数,排列个数是奇数时,设a[i]表示第i个字符出现次数,排列个数=\(\binom{|S|}{…
FFT #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<algorithm> #define maxn 1000005 using namespace std; inline int read() { ,f=;char ch=getchar(); ; +ch-'; return x*f; }…
题意 题目链接 Sol 这个不用背XD 前置知识: \(f(x) = ln(x), f'(x) = \frac{1}{x}\) \(f(g(x)) = f'(g(x)) g'(x)\) 我们要求的是\(G(x) = F(A(x)), F(x) = ln(x)\) 可以直接对两边求导\(G'(A(x)) = F'(A(x))A'(x) = \frac{A(x)}{A'(x)}\) 发现这个可以算,只要求个逆就行了. 那么就直接求导之后积分回去,复杂度\(O(nlogn)\) #include<bi…