多項式各種操作(求逆,取模,ln,exp,開方,牛頓迭代)+生成函式
我們已經知道了可以使用FFT和NTT在
O(nlogn)的時間內計算多項式乘法,那對於其它的運算呢?
首先,我們需要知道多項式逆元這個根本性的問題。
多項式求逆
考慮兩個多項式
A(x),B(x),若A(x)B(x)≡1(mod xn),那麼我們稱
B(x)是A(x)mod xn意義下的逆元,即它們乘積的前
n項只有常數項為1,其它都是0.
那麼我們如何計算逆元呢?考慮如果我們已經計算出了
A(x)C(x)≡1(mod xn),那麼我們能不能推匯出滿足
A(x)B(x)≡1(mod x2n)的多項式
B(x)呢?
首先將兩式相減,可以得到
A(x)(B(x)−C(x))≡0(mod xn)
由於等式左邊多項式的前
n項係數都是0,可以把這個玩意兒平方:
A2(x)B2(x)+A2(x)C2(x)−2A2(x)B(x)C(x)≡0(mod x2n)
又由於
A(x)B(x)≡1(mod x2n),帶入可以得到:
2A(x)C(x)−A2(x)C2(x)≡1(mod x2n)
提取多項式
A(x):
A(x)(2C(x)−A(x)C2(x))≡1(mod x2n)
即
B(x)=2C(x)−A(x)C2(x)。
於是我們會發現一個多項式是否有逆元完全取決於該多項式的常數項是否有逆元。由於這個演算法每次可以將問題規模減半,總的時間複雜度就是
T(n)=T(2n)+O(nlogn)=O(nlogn)
例題 洛谷3711 倉鼠的數學題
題目連結
我們已經知道了可以使用FFT和NTT在
O
(
n
4725傳送門 4726傳送門 解析 程式碼:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
int ans=0;
char ch=get
傳送門
題解:
看到這種二叉樹的題第一反應就是類似卡特蘭數的遞推。或者另外一種直觀的想法是看成一個點和兩邊的二叉樹的拼接,注意這裡不帶標號。
那麼很簡單了,對於點和二叉樹分別構造OGF:g(x),f(x),那麼:
f=gf2+1
解二次方程:
f=2
傳送門
題解:
把0操作看做是葉子,1操作看做非葉節點,一個操作在另一個操作刪除,則另一個操作為這個操作的父親,於是轉化成了滿足以下條件的nnn個點的樹的計數:
1.父親標號>兒子。
2.若一個點為非葉節點,記其兒子中葉子節點的數量為TTT,則若其兒子中有
迴圈結構1.當型:當P條件成立時(T),反覆執行A,知道P為“假”時才停止迴圈。2.直到型:先執行A,在判斷P,若為T,在執行A,如此反覆,知道P為F。While迴圈在迴圈剛開始時,會計算一次“布林表示式”的值,若條件為真,執行迴圈體。而對於後來每一次額外的迴圈,都會在開始前
Dropping tests
Time Limit: 1000MS Memory Limit: 65536K
Description
In a certain course, you take n tests. If you g
在acm競賽中,組合數取模的題目還是經常會見到的,所以這是有必要掌握的一個演算法。我本人就因為這個東西而被坑了很多次了= =之前的部落格也都扯過了,就不多說了,下面進入正題。
(1)楊輝三角求組合數
楊輝三角這個東西應該都不陌生,三角的兩邊始終為一,之後向 int 為什麽不能 style code 為我 max sin clas pan
1 #include <iostream>
2 #include <cstdio>
3
4 using namespace std;
5 typedef readline tco write span count string rgs logs index
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
pac namespace for ons mod 思維 space scan 動態規劃 #include<bits/stdc++.h>using namespace std;const long long mod=1000000007,inv=57000000 沒有網址qwq
沒有oj
翻樹狀陣列看到求逆序對先複習一下歸併求逆序對qwq
逆序對真是個神奇的東西啊QAQ
純屬隨手一打隨手一貼quq
1 #include<cstdio>
2 #include<iostream>
3 using namespace std
Q - Castle Walls
POJ - 1794
Background In medieval times, knights commanded big armies of peasants. When they had to storm a cas
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node{
ElementType data;
struct Node* l
1 //注意: 操作checkbox的checked,disabled屬性時jquery1.6以前版本用attr,1.6以上(包含)建議用prop
2
3 //1、根據id獲取checkbox
4 $("#cbCheckbox1");
5
求逆序對個數的三種方法
逆序對: 對於一個序列 a1a_1a1,a2a_2a2,a3a_3a3…ana_nan,如果存在aia_iai>aja_jaj且i<j,則aia_iai和aja_jaj為一個逆序對。
這裡將介紹3種求逆序對對數
Swaps and Inversions
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth
先使用先序的方法建立一棵二叉樹,然後分別使用遞迴與非遞迴的方法實現前序、中序、後序遍歷二叉樹,並使用了兩種方法來進行層次遍歷二叉樹,一種方法就是使用STL中的queue,另外一種方法就是定義了一個數組佇列,分別使用了front和rear兩個陣列的下標來表示入隊與出隊,還有
注入以下RedisTemplate@Autowired
private RedisTemplate<String,String> redisTemplate;1、儲存和讀取Set:程式碼示例:SetOperations<String, String>
FSMO是Flexible single master operation的縮寫,意思就是靈活單主機操作。營運主機(Operation Masters,又稱為Flexible Single Master Operation,即FSMO)是被設定為擔任提供特定角色資訊的網域
首先給大家普及一下什麼是擴充套件歐幾里德演算法,它是由歐幾里德演算法演變的,即我們常說的輾轉相除法。
程式碼如下:
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
那麼對於不完全為0的非負整數,a,b,gcd(a,b
首先可以想到使用伯努利數來化簡算式。於是就有
f(n)=k=0∑nSk(x)ak=1+k=0∑nakk+11i=0∑k(−1)i(ik+1)Bixk+1−i
最開始有個1是因為題目中把
00也算為1.然後我們考慮繼續化簡:
f(n)−1=i=0∑ni!(−1)ik=i∑n
相關推薦
多項式各種操作(求逆,取模,ln,exp,開方,牛頓迭代)+生成函式
2019.01.01洛谷 P4725/P4726 多項式對數/指數函式(牛頓迭代)
BZOJ3625: [Codeforces Round #250]小朋友和二叉樹(OGF+牛頓迭代)
UOJ#428. 【集訓隊作業2018】普通的計數題(牛頓迭代)
Java_20_迴圈結構_While迴圈_Do-while迴圈(執行順序:初始化、布林表示式條件判斷、迴圈體、迭代)
Poj 2976 Dropping tests(01分數規劃 牛頓迭代)
求組合數取模(楊輝三角打表 & 求逆元(擴充套件歐幾里得、費馬小定理、尤拉定理、線性求法) & Lucas)
求第n行楊輝三角(n很大,取模
在0~N個數字中,取指定個數的不重復數字,要求這些數字的和為指定值,求所有結果
2018牛客多校第九場E(動態規劃,思維,取模)
【模板】歸併排序(+求逆序對)
Q - Castle Walls POJ - 1794 (求逆序對)
BST及其各種操作(C實現)
jQuery對checkbox的各種操作(詳細)
求逆序對個數的三種方法(歸併排序,樹狀陣列,權值線段樹)
HDU-6318 Swaps and Inversions(求逆序數+樹狀陣列)
遍歷二叉樹的各種操作(非遞迴遍歷)
RedisTemplate的各種操作(set、map、list、value)
AD中FSMO五大角色的介紹及操作(轉移與抓取)
擴充套件歐幾里德演算法模版題(求逆元+分析+題目)HDU1576 A/B