解題 SCOI 2014 方伯伯運椰子

2022-10-11 08:15:08 字數 1092 閱讀 2877

題面

很有趣的一道題,看起來是個神奇網路流,其實我們只要知道網路的一些性質就可以做這道題了

因為題目要求流量守恆,所以我們其實是在網路中搬運流量,最終使得總費用減小,具體來說我們可以直接把這種「搬運」的關係建出來:

對於一條從$u$到$v$的邊,從$u$向$v$連一條$b+d$的邊,如果其上限不為零,再從$v$向$u$連一條$a-d$的邊

那麼得到的這張新圖其實是描述了圖中的費用流,乙個合法的搬運方案就是乙個環(轉了一圈保證流量還是守恆的),然後有乙個叫做消圈定理的東西:

消圈定理:殘量網路裡如果存在負費用環,那麼當前流不是最小費用流。因為通過增加殘量網路負權邊的流量,減少正權邊的流量,一定能得到另乙個更優的可行流。

於是就判負環吧=。=

1 #include2 #include3 #include4 #include5

using

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 }

view code

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 中的每個人的石子都合併成一堆石...