題目大意:自己看中文。
思路:不難發現,題目等價於讓我們求出一些標號上公升的子串行精確覆蓋全集。每個子串行的起點一定是利用「能力爆發」 得到的。
那麼我們僅僅需對於每乙個星球,確定乙個前驅就能夠了。
若是0作為前驅。則轉移代價為定位時間;否則轉移代價為路徑長度。
此外乙個點的前驅的標號嚴格小於自己的標號。
注意0能夠作為多個星球的前驅,剩下的星球僅僅能作為乙個星球的前驅。
於是轉化為類二分圖最優匹配問題,利用最小費用流求解就可以。
code:
#include #include #include #include #include using namespace std;
queueq;
#define n 810
struct solver
void addedge(int a, int b, int _flow, int _cost)
void make(int a, int b, int _flow, int _cost)
bool spfa(int s, int t)
}} return d[t] != 0x3f3f3f3f;
} int mincost(int s, int t)
return res;
}}g;
int main()
int a, b;
for(i = 1; i <= m; ++i)
g.make(0, 1, 0x3f3f3f3f, 0);
for(i = 1; i <= n; ++i)
g.make(0, i<<1, 1, 0), g.make(i<<1^1, 2*n+2, 1, 0);
printf("%d\n", g.mincost(0, 2*n+2));
return 0;
}
bzoj1927 Sdoi2010 星際競速
傳送門 思路 拆點拆成x和x s向x 連邊,容量為1,費用為定位時間 s向x連邊,容量為1,費用為0 對於原圖的邊u v u向v 連邊,容量為1,費用為時間 x 向t連邊,容量為1,費用為0 跑一遍費用流即可 include include include includeconst int maxn...
bzoj1927 Sdoi2010 星際競速
description 10 年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個專案的冠軍無疑是很多人的夢想,來自傑森座 星的悠悠也是其中之一。賽車大賽的賽場由 n 顆行星和m條雙向星際航路構成,其中每顆行星都有 乙個不同的引力值。大賽要求車手們從一顆與這 n 顆行星之間沒有任何...
SDOI2010 bzoj1927 星際競速
描述 10 年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個專案的冠軍無疑是很多人的夢想,來自傑森座 星的悠悠也是其中之一。賽車大賽的賽場由 n 顆行星和m條雙向星際航路構成,其中每顆行星都有乙個不同的引力值。大賽要求車手們從一顆與這 n 顆行星之間沒有任何航路的天體出發,訪問...