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...