題面
很有趣的一道題,看起來是個神奇網路流,其實我們只要知道網路的一些性質就可以做這道題了
因為題目要求流量守恆,所以我們其實是在網路中搬運流量,最終使得總費用減小,具體來說我們可以直接把這種「搬運」的關係建出來:
對於一條從$u$到$v$的邊,從$u$向$v$連一條$b+d$的邊,如果其上限不為零,再從$v$向$u$連一條$a-d$的邊
那麼得到的這張新圖其實是描述了圖中的費用流,乙個合法的搬運方案就是乙個環(轉了一圈保證流量還是守恆的),然後有乙個叫做消圈定理的東西:
消圈定理:殘量網路裡如果存在負費用環,那麼當前流不是最小費用流。因為通過增加殘量網路負權邊的流量,減少正權邊的流量,一定能得到另乙個更優的可行流。
於是就判負環吧=。=
1 #include2 #include3 #include4 #include5view codeusing
namespace
std;
6const
int n=5005,m=3005;7
const
double eps=1e-4,inf=1e12;
8int n,m,t1,t2,t3,cnt,last,from;9
double val[2*m+n],dis[n],d1,d2,d3,l,r;
10int p[n],noww[2*m+n],goal[2*m+n],inq[n],vis[n];
11 queueqs;
12void link(int f,int t,double
v)13
17bool check(double
x)1835}
36}37return
true;38
}39intmain()
4046
if(t2==n-1)
47 link(t1,t2,d2+d3); if(t3) link(t2,t1,d1-d3); 48}
49while(r-l>eps)
5055 printf("
%.2lf
",r);
56return0;
57 }
SCOI2014 方伯伯的OJ
資料範圍 n 108 m 105 n 108 m 105 一眼平衡樹。5分鐘出思路,調了3小時。我們不好直接維護排名的平衡樹,也不好直接維護編號的平衡樹。那就建2 2 顆平衡樹,一棵以編號中序遍歷,一棵以排名中序遍歷,每個節點開pa ir role presentation style positi...
SCOI2014 方伯伯的商場之旅 解題報告
我一開始的想法會被兩個相同的集合位置去重給搞死,不過應該還是可以寫的,討論起來老麻煩。可以先欽定在 1 號點集合,然後往後調整一部分。具體一點,通過字首和減去字尾和的正負性移動 寫的時候把 sum 壓進去搞會非常簡單 code include include define ll long long ...
SCOI2014 方伯伯的商場之旅
方伯伯有一天去參加乙個商場舉辦的遊戲。商場派了一些工作人員排成一行。每個人面前有幾堆石子。說來也巧,位置在 i 的人面前的第 j 堆的石子的數量,剛好是 i 寫成 k 進製後的第 j 位。現在方伯伯要玩乙個遊戲,商場會給方伯伯兩個整數 l,r。方伯伯要把位置在 l,r 中的每個人的石子都合併成一堆石...