考慮沒有爆發,那麼相當於是帶權最小不可交路徑覆蓋,由於只能從編號小的到編號大的,因此一定是dag,而dag的最小路徑覆蓋可以拆點並跑最大流,那麼帶權的只需要跑費用流即可(s向i連(1,0)的邊,i』向t連(1,0)的邊,i向j』連(1,t)的邊,其中i->j有時間為t的邊)。
考慮爆發操作,相當於讓任意兩點之間都能夠新增一條邊,但這樣跑邊數太多,可以直接從s連向i』(1,ai)的邊(ai表示i爆發的代價)即可。
1 #include2view codeusing
namespace
std;
3#define n 2005
4struct
jiedge[n*20
];7 queueq;
8int e,n,m,t,x,y,head[n],d[n],vis[n],from
[n];
9void add(int x,int y,int z,int
w)17
bool
spfa()35}
36}37}
38return d[t]<0x3f3f3f3f;39
}40intdinic()48}
49return
ans;50}
51int
main()
60for(int i=1;i<=m;i++)
65 t=2*n+1
;66 printf("%d"
,dinic());
67 }
BZOJ1927星際競速
1927 sdoi2010 星際競速 time limit 20 sec memory limit 259 mb submit 1727 solved 1053 description 10 年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個專案的冠軍無疑是很多人的夢想,來自傑森...
bzoj 1927 星際競速(拆點費用流)
題目鏈結 好嘛,現在我要正式用某神犇的部落格上的題的順序開始刷題了。這道題將每個能力爆發模式的費用,即單點費用拆成兩個點,再加邊。要加入乙個源點和匯點。本蒟蒻只會寫有點耗時的spfa版,若有那個神犇會zkw費用流,請教一下 include include include includeusing n...
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...