【题目】:

  给一棵树,求异或和为k的路径个数。

【题解】:

  很遗憾比赛时做不出来,后来看别人题解做出来的。用于记录博客所用。

  然后进行Dfs,得到从根节点到某一个节点的异或值,计算方案时只需要在map中查询w xor k的数量(如果路径不经过所选的根节点,那么其公共部分对答案无影响),不难发现这样计算不需要考虑k=0的特殊情况和重复的问题。

我们可以在O (nlogn)的时间完成这个过程。

  值得一提的是,题目保证了直径不超过150000,意在防止Dfs导致爆栈。

 #include<bits/stdc++.h>
using namespace std;
const int N = 1e6+;
typedef struct Edge{
int to,next,w;
}Edge;
Edge e[N<<];
map<int,int>Mp;
int head[N],cnt,n,m,k;
long long ans;
void add_edge(int u,int v,int w){
e[cnt] = Edge{ v ,head[u],w};
head[u] = cnt ++ ;
}
void dfs(int u,int fa,int w){
ans = ans + Mp[w^k];
Mp[w] ++ ;
for(int i=head[u];~i;i=e[i].next){
int to = e[i].to;
if( to == fa ) continue;
dfs( to , u , w^e[i].w );
}
}
int main()
{
memset(head,-,sizeof head );
scanf("%d%d",&n,&k);
for(int i=,u,v,w;i<n;i++){
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w);
add_edge(v,u,w);
}
dfs(,,);
printf("%lld\n",ans);
return ;
}

树上异或和为k的方案数

居然能让我找到一个类似的题目,真的太幸运了。

P2420 让我们异或吧

https://www.luogu.org/problem/P2420

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5 + ;
typedef struct Edge{
int to,next,w;
//Edge() {}
Edge( int To = ,int Ne = - , int W = ):
to(To) , next(Ne) , w(W) {}
}Edge;
Edge e[N<<];
int head[N],dis[N],cnt;
void add_edge(int u,int v,int w){
e[cnt] = Edge( v,head[u],w);
head[u] = cnt ++ ;
} void dfs(int u,int Fa,int w){
dis[u] = w ;
for(int i=head[u];~i;i=e[i].next){
int to = e[i].to ;
if( to == Fa ) continue ;
dfs( to,u,w^e[i].w);
}
}
int main()
{
int n,m;
memset(dis,,sizeof dis);
memset(head,-,sizeof head);
scanf("%d",&n);
for(int i=,u,v,w;i<n;i++){
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w);
add_edge(v,u,w);
}
dfs(,,); scanf("%d",&m);
for(int i=,u,v;i<=m;i++){
scanf("%d%d",&u,&v);
int ans = dis[u] ^ dis[v] ;
printf("%d\n",ans);
} }

P2420 让我们异或吧

【树上异或和计数】czr 太弱啦的更多相关文章

  1. POJ 3764 The xor-longest( 树上异或前缀和&字典树求最大异或)

    In an edge-weighted tree, the xor-length of a path p is defined as the xor sum of the weights of edg ...

  2. POJ-1741 树上分治--点分治(算法太奇妙了)

    给你1e5个节点的树,(⊙﹏⊙) 你能求出又几对节点的距离小于k吗??(分治NB!) 这只是一个板子题,树上分治没有简单题呀!(一个大佬说的) #include<cstdio> #incl ...

  3. Delphi的RTTI还分为对类和对象的判断,以及对普通属性的判断——相比之下,C++的RTTI实在太弱!

    堂堂C++沦落到这个地步,也实在是够可怜的.

  4. hdu 2821 学习一点dfs的小技巧吧。。 还是自己太弱了

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; int r,c ...

  5. 差分数组 and 树上差分

    差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易 ...

  6. 新浪计数业务之Redis

    今天听一个同事说新浪使用的是Redis,于是自己将研究的过程整理出来以备后用. 我们都知道微博这玩意儿现在很火,新浪作为国内最早使用redis,并且是国内最大的redis使用者,当然备受人们关注.新浪 ...

  7. Pólya计数定理

    我日啊..被cls的计数题虐得欲仙欲死...根本不会计数QAQ... 不懂数学啊... 前置技能 群 群是二元组\((G,*)\),满足 \(*:(G,G)\rightarrow G\) \(\exi ...

  8. HDU5779 Tower Defence (BestCoder Round #85 D) 计数dp

    分析(官方题解): 一点感想:(这个题是看题解并不是特别会转移,当然写完之后看起来题解说得很清晰,主要是人太弱 这个题是参考faebdc神的代码写的,说句题外话,很荣幸高中和faebdc巨一个省,虽然 ...

  9. Android系统智能指针的设计思路(轻量级指针、强指针、弱指针)

    本博客为原创,转载请注明出处,谢谢. 参考博文:Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 C++中最容易出错的地方莫过于指针了,指针问题主要有两类,一是内存泄露,二是无 ...

随机推荐

  1. flask + nginx + uwsgi + ubuntu18.04部署python restful接口

    目录 参考链接 效果展示 一.准备工作 1.1 可运行的python demo: 1.2 更新系统环境 二.创建python虚拟环境 三.设置flask应用程序 四.配置uWSGI 五.设置系统启动 ...

  2. 微信浏览器H5开发常见的坑

    ios端兼容input光标高度 问题详情描述: input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样.例如下图,左图是正常所期待的输入框光标 ...

  3. POJ 2486 Apple Tree ——(树型DP)

    题意是给出一棵树,每个点都有一个权值,从1开始,最多走k步,问能够经过的所有的点的权值和最大是多少(每个点的权值只能被累加一次). 考虑到一个点可以经过多次,设dp状态为dp[i][j][k],i表示 ...

  4. sql mode 问题及解决 错误代码:1055 this is incompatible with sql_mode=only_full_group_by

    数据库升级到5.7.21后,一个正常的分组后按日期排序,并返回数据的语句开始报错: 语句如下: SELECT id,title,add_time FROM `message` GROUP BY add ...

  5. Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤

    Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤 一.在ubuntu下尝试 1. 在虚拟机VWware Workstation 12. ...

  6. Python语法 - 生成器

    生成器基本概念 1 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束 2 生成器表达式能做的事情列表解析基本都能处理,只不 ...

  7. nginx使用certbot配置https

    一般现在的网站都要支持https,即安全的http. 机器:阿里云Ubuntu 16.04.3 LTS 方案一:自己申请证书 配置时需要确保有ssl模块, 之后域名解析下, 之后时申请证书,可以去阿里 ...

  8. Apache Flink -Streaming(DataStream API)

    综述: 在Flink中DataStream程序是在数据流上实现了转换的常规程序. 1.示范程序 import org.apache.flink.api.common.functions.FlatMap ...

  9. go之构造体方法

    package main import ( "fmt" "math" ) type Vertexs struct { X, Y float64 } //Abs ...

  10. [转][C#]AutoFac 使用方法总结

    AutoFac使用方法总结:Part I 转自:http://niuyi.github.io/blog/2012/04/06/autofac-by-unit-test/ AutoFac是.net平台下 ...