題目鏈結
題目大意:一棵樹,邊權為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 根據點分治的過程,可知重心和路徑是一對多的關係,而且一條路徑只會對應乙個重心,就是說每條路徑都只會...