博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5909 Tree Cutting
阅读量:6338 次
发布时间:2019-06-22

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

 

题意:

给出一颗带点权的树,输出有多少联通块的点权异或和=[1,m)

 

dp[x][i] 以x为根的子树中,联通块内一定有x,目前异或和为i 的联通块 个数

dp[x][i] =  dp[x][i] + Σ Σ [j^k==i] dp[x][j]^dp[son][k]

时间复杂度为 n*m*m

用FWT优化到 n*m*logm

 

 

#include
#include
#include
#include
using namespace std;const int mod=1e9+7;#define N 1001const int M=(1<<10)+2;int m;int val[N];vector
V[N];int dp[N][M],tmp[M];int ans[M];long long inv;void read(int &x){ x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }}void FWT_xor(int *a,int n){ int x,y; for(int d=1;d
<<=1) for(int m=d<<1,i=0;i
>=1,a=a*a%mod) if(b&1) res=res*a%mod; return res;}int main(){ int T; int n,u,v; read(T); inv=Pow(2,mod-2); while(T--) { memset(dp,0,sizeof(dp)); memset(ans,0,sizeof(ans)); read(n); read(m); for(int i=1;i<=n;++i) read(val[i]); for(int i=1;i<=n;++i) V[i].clear(); for(int i=1;i

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8596594.html

你可能感兴趣的文章
java中有类似C#里ref或out的功能吗?
查看>>
利用 Visual C# .NET 使 Word 自动新建文档
查看>>
SproutCore:将MVC引入JavaScript
查看>>
错误:“产品订单的调度参数没有被定义”
查看>>
机器视觉在带钢针孔检测中的应用
查看>>
ASP.NET WEB API 调试
查看>>
宾克斯的酒
查看>>
Deploy Web Apps with High Availability, Fault Tolerance, and Load Balancing on Alibaba Cloud
查看>>
[20160816]du 显示各个目录使用情况.txt
查看>>
拥有高水平热稳定性的红外传感器 可用于精确温度测量的多种应用
查看>>
WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
查看>>
数据库引擎调整顾问
查看>>
Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
查看>>
Enhancing the Application: Advanced JDBC Features(转)
查看>>
Mybatis通过注解方式实现批量插入数据库 及 常见的坑
查看>>
Linux内核分析(六)----字符设备控制方法实现|揭秘系统调用本质
查看>>
Replication的犄角旮旯(五)--关于复制identity列
查看>>
5-关联模型
查看>>
Android零基础入门第35节:Android中基于回调的事件处理
查看>>
nagios报错一例
查看>>