雜項演算法小總結

2022-04-30 21:18:19 字數 2055 閱讀 6260

很多知識不好整理,這篇文章總結一些雜亂的東西,涉及的內容有,\(\texttt\),矩陣乘法(本來應該寫在代數裡面的,但我的代數知識少得可憐,就寫在雜項裡面了),高斯消元,\(\texttt\),掃瞄線,隨機化與模擬退火(還沒學,學了會寫的)。

玲瓏杯 round15 g鹹魚拷問

\(st\)表,本質上是一種\(dp\),設\(f[i][j]\)表示序列中第\(i\)個數開始向後\(2^j\)個數這個區間的最值,那麼初始狀態\(f[i][0]=a[i]\),\(dp\)方程為:

\(f[i][j]=max/min(f[i][j-1],f[i+(1<

從中我們可以看出,從\(i\)開始後的\(2^j\)個數,我們把它分成了兩段,一段是第\(i\)個數到第\(i+(1<

以上是預處理部分,現在如果我們要考慮查詢\([l,r]\)這個區間呢?看圖(來自某\(c\)姓教練)

在此,\(x_=log(r-l+1)/log(2)\)。

#include#define int long long

using namespace std;

int n,a[100005],b[100005],maxn[100005][25],minn[100005][25];

void rmq()

=\begin

a_ & a_ & a_ \\

a_ & a_ & a_

\end

\]設有另乙個矩陣

\[b_=

\begin

b_ & b_ \\

b_ & b_ \\

b_ & b_

\end

\]那麼兩者相乘的結果就應該是

\[c_=

\begin

a_*b_+a_*b_+a_*b_ & a_*b_+a_*b_+a_*b_ \\

a_*b_+a_*b_+a_*b_ & a_*b_+a_*b_+a_*b_

\end

\]也就是說,矩陣之間的乘法是第乙個矩陣的行乘第二個矩陣的列。

根據矩陣的運算法則,我們不難看出,矩陣是滿足乘法分配律和乘法結合律的,但是矩陣不滿足乘法交換律,一旦交換,結果矩陣就會產生變化。

矩陣乘法在\(oi\)中主要運用於優化遞推式,有的時候\(o(n)\)的複雜度也許會高達\(1e9\)甚至\(1e12\),這個時候如果有矩陣乘法(嚴格來說是矩陣快速冪)的優化,複雜度就可以降為\(o(logn)\),可以接受。

只要我們把遞推式寫了出來,矩陣一般都比較好構造。

矩陣加速

#include#includeusing namespace std;

#define ll long long

const ll mod=1e9+7;

struct node

}u,v;

//,// ,

// //};

//,// ,

// //};

void init()

node mul(node a,node b)

return t;

}node pow(ll b)

return u;

}ll t;

int main()

node ans=pow(p);

printf("%lld\n",u.m[1][0]);

} return 0;

}

矩陣快速冪

#include#include#includeusing namespace std;

#define ll long long

const int mod=1e9+7;

ll n,k;

struct node

a;node mul(node a,node b)

return t;

}node pow(node a,ll k)

return ans;

}int main()

return 0;

}

tomcat小tip與雜項

tomcat根目錄 bin 用於放置可執行檔案和指令碼執行檔案 conf 用於放置 tomcat 的配製檔案,如 server.xml logs 放置日誌記錄檔案 web 應用程式的主要發布目錄 work tomcat 的工作目錄,jsp檔案翻譯成 servlet 原始檔和 class 檔案放置在這...

雜項總結 檔案分離

binwalk工具可以快速分辨檔案是否由多個檔案合併而成,並將檔案進行分離。將目標檔案複製到kali中,在終端中使用命令列進入檔案所在資料夾,使用如下命令,可以檢視檔案是否由多個檔案合併而成,如果是則可以並將檔案進行分離 分析檔案 binwalk 檔名 如果分析結果只有少量識別符號且沒有與原始檔型別...

排序演算法小總結

幾種常見的排序演算法,1,氣泡排序 2,插入排序 3,選擇排序 4,快速排序 include stdio.h void swap int a,int b 氣泡排序,注意j 從1開始到n i void maopao sort int s,int n 插入排序 從第乙個數開始,看看到它前面的人有沒有人不...