【题目】:

  给一棵树,求异或和为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. Mapreduce-实现webcount代码

    参考博文:https://blog.csdn.net/qq_41035588/article/details/90514824 首先安装一个Hadoop-Eclipse-Plugin 方便来对于hdf ...

  2. POJ2689

    题目 POJ2689 Prime Distance 原题传送门 主要思路 刚看到这题,心想:不就筛个 \(\left[2,U\right]\) 的质数表出来就可以了吗?一看数据范围: \(1<= ...

  3. Qt内的各种路径(让人迷惑)

    Qt里面各种获取程序路径或者当前路径的写法,在此梳理一下,以防今后开发的程序中路径不统一 1.利用QDir获取路径 QDir::currentPath() 此路径是项目编译生成的路径即可执行文件所在目 ...

  4. 5.性能测试工具比较:Jmeter和LR

    性能测试工具较多,无法一一进行介绍,感兴趣者可自行搜索资料学习.需要说明的是工具使用方法和原理都大同小异,掌握一个,其他皆可快速上手. 下面就以服务端的性能测试工具为例,对市场上最常用,知名度较高,也 ...

  5. ckpt convert to pb

    import tensorflow as tf #from create_tf_record import * from tensorflow.python.framework import grap ...

  6. JAVA 基础编程练习题45 【程序 45 被 9 整除】

    45 [程序 45 被 9 整除] 题目:判断一个素数能被几个 9 整除 package cskaoyan; public class cskaoyan45 { public static void ...

  7. 比特币 难度值(difficulty)

    难度(Difficulty) 难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度.比特币网络有一个全局的区块难度,有效的区域必须有一个HASH值,该HASH值必须小于给定的目 ...

  8. iOS开发之—— 加密使用(MD5,base64,DES,AES)

    基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...

  9. Flutter 底部的renderflex溢出

    一开始直接使用Scaffold布局,body:new Column  然后模拟器会提示捕获异常: 然后百度了一下Flutter的溢出问题,发现解决办法是使用SingleChildScrollView包 ...

  10. webdriver(chrome无头浏览器)

    '''chrome无头浏览器''' from selenium.webdriver.chrome.options import Options # 导入相应的类 from selenium impor ...