3697 採藥人的路徑

2021-08-15 11:03:56 字數 884 閱讀 3779

題目鏈結

題目大意:一棵樹,邊權為0/1,求有多少路徑滿足01個數相等,且存在乙個點(不能為起點或終點),這個點到起點和終點分別滿足01個數相等

題解:澱粉質點分治

ore menci

我的收穫:澱粉質!

#include 

using

namespace

std;

const

int n=100005;

const

int inf=1e9;

int n,temp,root,mxdeep;

int t,head[n];

int sz[n],vf[n];

int dep[n],dis[n];

bool vis[n];

long

long ans;

struct data

}g[2],f[2],t;

struct edgee[n<<1];

void add(int u,int v,int w)

void dfsroot(int x,int fa)

vf[x]=max(vf[x],temp-sz[x]);

if(vf[x]void dfs(int x,int fa)

t[dis[x]]--;

}void solve(int x)

}for(int i=-mx;i<=mx;i++) g[0][i]=g[1][i]=0;

for(int i=head[x];i!=-1;i=e[i].nex)

if(!vis[e[i].to])

}void work()

void init()

}int main()

3697 採藥人的路徑

採藥人的藥田是乙個樹狀結構,每條路徑上都種植著同種藥材。採藥人以自己對藥材獨到的見解,對每種藥材進行了分類。大致分為兩類,一種是陰性的,一種是陽性的。採藥人每天都要進行採藥活動。他選擇的路徑是很有講究的,他認為陰陽平衡是很重要的,所以他走的一定是兩種藥材數目相等的路徑。採藥工作是很辛苦的,所以他希望...

BZOJ3697 採藥人的路徑

給定一棵樹,找一些路徑滿足,路徑上0,1數量相等,並在路徑上找到乙個點 休息站 改點到路徑兩端上0,1數量也相等,同一條路徑點不同,記為不同,詢問有多少條路徑滿足條件 點分治 對於乙個點 u 我們遍歷每棵子樹中的節點 v,求出di s u,v 我們記錄這條路徑上有無節點 t 使得di s v,t 0...

bzoj3697 採藥人的路徑

這是個思路題,對我這樣的zz 來說可能已經接近自己想出來的極限了。一看統計符合條件的路徑條數,肯定是點分治,而且肯定是靜態的。首先把邊權變成 1 和 1 那麼一條路徑陰陽平衡也就是說它的權值和等於 0 根據點分治的過程,可知重心和路徑是一對多的關係,而且一條路徑只會對應乙個重心,就是說每條路徑都只會...