USACO15DEC 最大流Max Flow題解

2021-07-27 16:36:21 字數 1087 閱讀 5691

題目:

從乙個點運輸牛奶到另乙個點,求最大壓力的點是那個點?

很顯然,運輸牛奶是從乙個點運輸到這兩個點的lca之後再運到另乙個點

最後是修改很顯然乙個點乙個點去加一是tle的所以,我們要用乙個差分的思想:

用record陣列,兩個點各加一,lca減一,lca的父親減一

最後用dfs搜尋一遍就出答案了

tarjan法求lca,tmpfa存tarjan用的fa

fa只存這一點的上一級

#include 

#include

#include

using namespace std;

int n,q,ans;

int toq[600100],nxtq[600100],headq[300100],totq;

int top[600100],nxtp[600100],headp[300100],totp;

int tmpfa[300100],fa[300100],record[300100];

bool vis[300100];

void addq(int f,int t)

void addp(int f,int t)

int find(int

x)void tarjan(int

pos,int pre)

vis[pos] = true;

for(int i = headq[pos];i;i = nxtq[i])

if(vis[toq[i]])

}void dfs(int

pos,int pre)

void dfsans(int

pos,int pre)

ans = max(record[pos],ans);

}int main()

for(int i = 1;i <= q;i++)

dfs(1,0);

tarjan(1,0);

dfsans(1,0);

printf("%d\n",ans);

}

USACO06DEC 牛奶模式

題意 求最長的可重疊的 k重複子串 的長度 考慮二分長度s,轉化為驗證性問題。對sa進行分組。保證組內height最小為s。這樣在組內rmq就可以任意了,因為rmq一定是大於s的。只要組內元素個數大於等於k就是可行解。1 include 2 using namespace std 34 struct...

1625 Usaco2007 Dec 寶石手鐲

time limit 5 sec memory limit 64 mb submit 1268 solved 887 submit status discuss 貝茜在珠寶店閒逛時,買到了乙個中意的手鐲。很自然地,她想從她收集的 n 1 n 3,402 塊寶石中選出最好的那些鑲在手鐲上。對於第i塊寶...

USACO 19 20 Dec銀組題解

1,moobuzz 這題其實是道數學題。我們先找找符合要求的數 1,2,4,7,8,11,13,14 我們發現再往後找都是這8個數中的乙個加15k如 16 19 29 找規律發現k n 8 ans 15 n 8 a n 8 a 可我們發現n是8的倍數時會出錯,特判一下當n 8 0時ans 15 n ...