bzoj4326 NOIP2015 運輸計畫

2021-08-20 09:53:14 字數 832 閱讀 5915

題目

大佬的部落格

思路其實很簡單,就是tarjan求lca+二分答案+樹上差分(貌似不需要解釋,看到這個思路就應該基本上會寫了吧),實現起來也聽簡單的

#include

using

namespace

std;

const

int n=300003;

struct nodee[n<<1],q[n<<1];

struct kklen[n];

int h[n],head[n],tot,cnt,ret,f[n],mx,i,l,r,mid,s[n],ans,dis[n],a[n],vis[n],num,n,m,x,y,z;

int read()while(c<48||c>57);

do x=(x<<1)+(x<<3)+(c^48),c=getchar();while(c>=48&&c<=57);

return f*x;

}void add(int x,int y,int z);

h[x]=tot;

}void addq(int x,int y);

head[x]=cnt;

}int find(int x)

void tarjan(int u,int pre)

for (int i=head[u],p,v;i;i=q[i].ne)

if (vis[v=q[i].to])

}void dfs(int u,int pre)

bool check(int x)

int main()

printf("%d",ans);

}

bzoj4326 NOIP2015 運輸計畫

題目 遙想當年初三參加時,想到了二分,想到了lca,就沒想到如何判斷,然後差20分省一23333.首先答案顯然滿足二分性質,之後判定答案。我們把長度超過k的路徑找到,找出它們公共邊中最長的,把它變為0,看是否可行。如何,找公共邊?樹鏈剖分當然可以,但太複雜了。可以把兩端標記加1,lca標記減2,之後...

bzoj4326 noip 2015 運輸計畫

time limit 30 sec memory limit 128 mb submit 1841 solved 1173 submit status discuss 公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航...

BZOJ 4326 NOIP2015 運輸計畫

time limit 30 sec memory limit 128 mb submit 1971 solved 1262 submit status discuss description 公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n?1 條雙向航道,每條航道建立在兩個星...