hdu 4370 0 or 1(最短路)
這是整套裡面我覺得最有意思的一道最短路,也確實讓我覺得我與真正acmer之間的距離還是很大的
problem description
given a n*n matrix cij (1<=i,j<=n),we want to find a n*n matrix xij (1<=i,j<=n),which is 0 or 1.
besides,xij meets the following conditions:
1.x12+x13+…x1n=1
2.x1n+x2n+…xn-1n=1
3.for each i (1in), satisfies ∑xki (1<=k<=n)=∑xij (1<=j<=n).
for example, if n=4,we can get the following equality:
x12+x13+x14=1
x14+x24+x34=1
x12+x22+x32+x42=x21+x22+x23+x24
x13+x23+x33+x43=x31+x32+x33+x34
now ,we want to know the minimum of ∑cij*xij(1<=i,j<=n) you can get.
給你乙個n*n的矩陣,然後讓咱們構造另乙個n*n的矩陣,構造的矩陣有如下要求,
1.x12+x13+…x1n=1.
2.x1n+x2n+…xn-1n=1.
3.for each i (1 i n), satisfies ∑xki (1<=k<=n)=∑xij (1<=j<=n).
額。。這個題解寫著好虛啊,畢竟不是自己想的。
究竟怎麼就是最短路了呢?
首先啊,如果每行的數字都縮成乙個點,且如果x(i,j) = 1 那麼我們連邊i->j,如果是0的話,乘cij之後和沒有是一樣的,所以不管他,那麼 連邊i->j什麼意思呢?
第三個條件是,第i行的x和等於第i列x和對吧,那麼從i出去多少條邊就是第i行多少個1 ,也就是第i行的和,換句話說:i點的出度就是∑xij 。
那麼當x(i,j)=1時,第j列是不是出現了乙個1?也就是說第j列的和:+1了。連邊所以的i->j後,就是所有第幾行第j列是1了,點j的入度自然就是第j列的和。
那麼第三個條件就是: 2~n-1這些節點,滿足:入度 = 出度!
第二個條件是 :n號節點的入度為1
第乙個條件: 1號節點的出度為1
然後基於這個思想,每個邊權值為c(i,j)
1->n的最短路就是答案,x為0的就是不選的邊,下= 1的就是選的邊,邊的選擇就交給最短路了,
這個時候,我又錯了。。。
只考慮1->n是不行的,因為可能1->..->1中間沒有n和n ->…->n這兩個路放在一起是最小的,那麼單純的最短路就不對了咯。我們需要搞兩種,在比較一下就好了,這個的處理就是之前的dist先為無窮,所以1直接可達的點放佇列,dijstra一下,就可以球出來1->1 1->n的最短路了,那麼n->n呢?
我是選擇了在乙個dij,然後就ac了==
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 300*300+10;
const
int maxm = 1e6+10;
int n,tot,head[maxn],dist[maxn],dis[maxn];
typedef pairpii;
priority_queuevector
,greater>q,p;
struct nodeedges[maxm];
void add(int u,int v,int w)
void init()
if(i == n&&j!=n)}}
}void dij()}}
}void di()}}
}void sov()
int main()
}
kuangbin帶你飛專題
kuangbin帶你飛 專題一 簡單搜尋 kuangbin帶你飛 專題二 搜尋高階 kuangbin帶你飛 專題三 dancing links kuangbin帶你飛 專題四 最短路練習 kuangbin帶你飛 專題五 並查集 kuangbin帶你飛 專題六 最小生成樹 kuangbin帶你飛 專題...
kuangbin帶你飛 專題四 最短路練習 G
題意 資訊傳輸,總共有n個傳輸機,先要從1號傳輸機向其餘n 1個傳輸機傳輸資料,傳輸需要時間,給出乙個嚴格的下三角 其實就是對角線之下的不包括對角線的部分 時間矩陣,a i j 代表從i向j傳輸資料需要的時間,並規定資料傳輸之間並無影響,即第乙個傳輸機可以同時向其餘傳輸機傳輸資料。求所有傳輸任務所需...
kuangbin帶你飛 專題十八 字尾陣列
寫了好久才把字尾陣列的專題寫完 字尾陣列就是對字串的所有字尾來搞事,通過對這些字尾排序,來得到這些字尾之前存在的關係。字尾陣列中的sa陣列 排名陣列 和height 相鄰排名lcp 有很多很有用的特性,使得在處理一些字串問題的時候很給力,比較流行的求字尾陣列的演算法有o nlogn 的倍增求法和o ...