博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU5909】Tree Cutting(FWT)
阅读量:5306 次
发布时间:2019-06-14

本文共 1305 字,大约阅读时间需要 4 分钟。

题目大意:

给你一棵\(n\)个节点的树,每个节点都有一个小于\(m\)的权值
定义一棵子树的权值为所有节点的异或和,问权值为\(0..m−1\)的所有子树的个数

\(f[i][j]\)表示节点\(i\)及其子树中异或和为\(j\)的方案数,发现合并答案的过程就是两个异或卷积,用\(FWT\)优化即可

//minamoto#include
#include
#define R register#define ll long long#define mem(a) memset(a,0,sizeof(a))#define fp(i,a,b) for(R int i=a,I=b+1;i
I;--i)#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)using namespace std;char buf[1<<21],*p1=buf,*p2=buf;inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}int read(){ R int res,f=1;R char ch; while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1); for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0'); return res*f;}const int N=(1<<10)+5,P=1e9+7,inv=500000004;inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}struct eg{int v,nx;}e[N<<1];int head[N],tot;inline void add_edge(R int u,R int v){e[++tot]={v,head[u]},head[u]=tot;}int n,m,lim,x,u,v,f[N][N],ans[N];void FWT(int *A,int ty){ for(R int mid=1;mid
<<=1) for(R int j=0;j
<<1)) for(R int k=0;k

转载于:https://www.cnblogs.com/bztMinamoto/p/10195433.html

你可能感兴趣的文章
python3爬虫之开篇
查看>>
day50 Pyhton 前端01
查看>>
故事与温度转换
查看>>
BZOJ2118: 墨墨的等式(最短路构造/同余最短路)
查看>>
优化网站设计系列文章总结和导读
查看>>
D7000、60D、K5、E5的详细对比评价(转)
查看>>
Centos7之Gcc安装
查看>>
asp.net mvc razor布局页中a标签的href的跳转问题
查看>>
foreach 与 Linq的 Select 效率问题
查看>>
BZOJ1101 [POI2007]Zap 【莫比乌斯反演】
查看>>
盛京剑客系列20:平仓中兴通讯,获利45.51%,继续加仓优质个股
查看>>
Android下的数据储存方式( 二)
查看>>
Android Bitmap开发之旅--基本操作
查看>>
通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(五)
查看>>
WAS6默认是不支持struts2的
查看>>
格式对流温度场有限差分(有限容积)程序入门之五:展望及问题
查看>>
HDU OJ 3306 The Number of set【状态压缩】
查看>>
Java平台对脚本语言支持之ScriptEngine创建方式
查看>>
Java Class Loader解析
查看>>
Cannot add foreign key constraint @ManyToMany @OneToMany
查看>>