BZOJ1927 Sdoi2010 星際競速

2021-09-07 10:48:52 字數 947 閱讀 4026

題目大意:自己看中文。

思路:不難發現,題目等價於讓我們求出一些標號上公升的子串行精確覆蓋全集。每個子串行的起點一定是利用「能力爆發」   得到的。

那麼我們僅僅需對於每乙個星球,確定乙個前驅就能夠了。

若是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 顆行星之間沒有任何航路的天體出發,訪問...