很多知識不好整理,這篇文章總結一些雜亂的東西,涉及的內容有,\(\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 插入排序 從第乙個數開始,看看到它前面的人有沒有人不...