st表(rmq問題)
//打表與查詢 這個是針對最大最小值
void stpre()
}void rmq(int a,int b)
lca(tarjan)
void tarjan(int u)
}col[u] = 1;
for(int i = h1[u]; ~i; i = query[i].next)
}
lca(倍增)
預處理每個結點的父親和深度
void pre(int u,int d,int fa) //處理每個結點的深度和父親
}}
倍增的預處理
int doubl() //倍增的預處理
return
0; }
詢問
int query(int a,int b)
if(x == y) return ans;
for(int j = 20; j >= 0; j--)
ans += (dis[x] - dis[dp[x][0]] + dis[y] - dis[dp[y][0]]);
return ans;
}
tarjan
(1).求有向圖強連通分量
int tarjan(int
id) else
if(vis[v])
low[id] = min(low[id],dfn[v]);
}if(low[id] == dfn[id])
while(sta[index] != id);
ans[anum ++] = num;
}return
0;}
(2).求無向圖割點
void tarjan(int u,int father)
else
if(dfn[v] < dfn[u] && father != v)
low[u] = min(low[u],dfn[v]);
}if(father == -1 && child == 1) iscut[u] = 0;
}
(3).求無向圖割邊(注意割邊需要去重,也就是有重邊的都不是割邊)
int tarjan(int u,int fa)
}else
if(dfn[v] < dfn[u] && v != fa)
low[u] = min(low[u],dfn[v]);
}return
0;}
匈牙利演算法:
bool find(int u)
}return
false;
}
2-sat問題
縮點 + 拓撲序
void tarjan(int u)
else
if(ins[v])
low[u] = min(low[u],dfn[v]);
} if(low[u] == dfn[u])
} } void solve()
flag == 0 ? printf("yes\n") : printf("no\n");
}
dinic求最大流前向弧優化+ 單路增廣(因為多路我很迷茫)
bfs求層次圖
int bfs()}}
return deg[t] != -1;
}
dfs找增廣路
int dfs(int u,int f)
}return
0;}
void solve()
cout << m-flow
<< endl;
}
e-k + bellman
e-k演算法其實就是找增廣路的bfs實現,來達到每次都找的是最短增廣路的目的。
對於最小費用最大流其實就是每次找費用最少且路徑最短的增廣路。
int bfs()}}
}if(d[t] == inf ) return
0; for(int u = t; u != st; u = edge[pre[u]].from)
return d[t];
}
我們來聊聊物件導向吧 一
前言 什麼是物件導向,對於初學者其實就是個噩夢,但是其實物件導向,也不可怕,我個人理解是 變數把具有一定作用的資料存起來,以便後面使用,而函式則是將經常使用的功能封裝起來以便後面使用,而物件導向的思想其實把擁有重複使用的變數和函式組裝起來的一種思想,分隔成一小塊塊的 以便管理和日後的維護.繼承 子類...
下一波模式移轉 訂製化製造 打通物聯網任督二脈
訂製化製造可望打通發展物聯網產業的任督二脈。由於各種終端裝置都可連網 互動,勢將衍生許多新興應用與服務的發展空間。物聯網產業已是大廠競相投入的兵家必爭地,也為新創企業開啟機會之窗,可思考發展建構訂製化的製造服務平台,橋接新創企業的創新與既有資訊科技製造業資源。也因此,資訊科技產業積極尋求新興產業,投...
世界那麼大,換一種生活吧!
每天行走在繁華逐夢的街道上,在車水馬龍的霓虹燈下,在喧鬧熱絡的人潮中,人們開始不自覺地加快腳步,漸漸地忘記了最初的夢想,忘記了曾經的誓言。快節奏的生活讓人們無暇喘息,想要停下腳步去追求詩和遠方,但是太多的壓力又讓我們難以前行。occs創新性的提出了一種工作理念,隨時隨地工作,自主掌控時間,其實這更是...