題目
大佬的部落格
思路其實很簡單,就是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 條雙向航道,每條航道建立在兩個星...