一些實用的模板

2021-08-20 14:16:49 字數 1648 閱讀 9815

1°floyd判最小環

注:包含基本的floyd演算法。最好寫的單源最短路徑演算法。但時間複雜度o(n^3),n=1000基本就用不了了。。。

void floyd()}}

}

3°dijkstra(迪傑斯特拉)演算法:單源最短路徑演算法

基本思路:每次確定到起點距離最短且距離尚未確定的點的dis,並對其所有鄰邊進行鬆弛操作

優點:非常常用!不容易被卡

缺點:慢(但相比floyd還是快的(霧

不加優化o(n^2)

堆優化(priority_queue或set) o(n log n)

void dijkstra()}}

return 0;

}int main()

for (int i=1;i<=n;i++) if (!vis[i]&&c[node][i]>f[node][i])

}if (!flag) break;

int tmp=1e+7;

for (int i=n;p[i]!=-1;i=p[i])

tmp=min(tmp,c[p[i]][i]-f[p[i]][i]);

for (int i=n;p[i]!=-1;i=p[i])

}int ans=0;

for (int i=1;i<=n+m+1;i++) ans+=f[0][i];

6° 單調佇列&單調棧

單調佇列:k個數中的最大/小值

單調棧:第k個數左/右最大/小的數 以及一些向左右拓展問題(poj 2559矩形面積)

單調棧**(手寫deque)(單調佇列差不多 只需要在q開頭元素的長度已經超過k時qt++)

int qt=0,qw=-1;

void insert(int x, int val)

qw++;

q[qw].val = val;

q[qw].x = x;

}

7°對從q[i]開始的k個數各加上a[i]

int cur=0;

for (int i=0;i8°dfs判環+拓撲序 o(v+e)

bool dfs(int cur)

while(!q.empty())

printf("%lld\n",ans);

if(t)

puts("");

}return 0;

}

//手寫佇列

#include#define maxn 500010

typedef long long ll;

const ll inf=100000000000;

ll a[maxn],b[maxn];

int head1,tail1,head2,tail2;

ll getmin()

{ ll x=inf,y=inf;

if(head1update:後來學習了歸併排序後才知道這其實是歸併的思想233333

11°配合二進位制列舉子集使用 可以得出列舉的子集的子集(如11101可以得到保證第2位一直是0 這是和普通直接小於列舉的不同之處)

for(ll i=1;i<1<12°

矩陣中從點i到點j的方案數為c(|xi−xj|,|xi−xj|+|yi−yj|)

QTreeWidget的一些實用方法

qtreewidget 的一些實用用法 qtreewidget是一種樹形的部件,它以樹的形式顯示各個項,它的每個項使用qtreewidgetitem來表示。qtreewidgetitem的值的表示都是用qstringlist來表示的。qtreewidget treewidget new qtreew...

jquery的一些實用方法

1,獲取瀏覽器型別與版本 使用 browser,browser.chrome 為true,表示當前為chrome瀏覽器,browser.mozilla 為true,表示當前為火狐瀏覽器,還可以通過 browser.version 方式獲取瀏覽器版本資訊。2,檢測瀏覽器是否屬於w3c盒子模型 瀏覽器的...

css一些實用的整理

取消a標籤的下劃線 a正常情況下,div標籤會換行,如果想忽略換行效果,可以使它們float,這樣就可以讓幾個div在同一行顯示。div如果想把列表的列表項水平顯示 或者div等塊級元素,忽略換行 可以修改display屬性的值為inline。li如果在容器 div 中太大,超出了div,可以修改w...