題目:從乙個點運輸牛奶到另乙個點,求最大壓力的點是那個點?
很顯然,運輸牛奶是從乙個點運輸到這兩個點的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 ...