标签:lin type code har bubble nbsp getchar ace size
懒得一起写blog了,反正没人看,分着写。
这个题看上去像个dp计数,其实这么想,题意就是根到叶子的xor和=0
分治节点可以随意调整,只有叶子节点的取值会对答案造成影响。
也就是每个点做根时,分支节点产生的方案贡献是2cnt,此处cnt是分支节点个数。
如果是叶子做根额外多一次幂,因为这个叶子节点被固定了。
#include<bits/stdc++.h> const int N=1000005; const int yql=1e9+7; typedef long long ll; using namespace std; int ind[N],n,m,cnt=0;ll ans=0,bin[N]; inline int read(){ int f=1,x=0;char ch; do{ch=getchar();if(ch==‘-‘)f=-1;}while(ch<‘0‘||ch>‘9‘); do{x=x*10+ch-‘0‘;ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘); return f*x; } int main(){ n=read(); for(int i=1;i<n;i++){ int u=read(),v=read(); ind[u]++;ind[v]++; } bin[0]=1;cnt=0; for(int i=1;i<=n*10;i++)bin[i]=(bin[i-1]<<1)%yql; for(int i=1;i<=n;i++)if(ind[i]!=1)cnt++; for(int i=1;i<=n;i++)ans=(ans+bin[cnt+(ind[i]==1)])%yql; ans=(ans+yql)%yql; printf("%lld\n",ans); }
【BubbleCup X】E:Casinos and travel
标签:lin type code har bubble nbsp getchar ace size
原文地址:http://www.cnblogs.com/zcysky/p/7475023.html